# HG changeset patch
# User Alex Gilkes
# Date 1256740788 0
# Node ID be27ed110b50fb12348ad055d037632be8dcdf2d
# Parent 044383f395250e703863527ebf8a67fdd315f149
Bringing in Helium, imaker and cmaker
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/build-jar.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/build-jar.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,77 @@
+
+
+
+
+ Called by hlm-jar.bat to build helium java code
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/build.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/build.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,40 @@
+
+
+
+
+ Helium targets to build helium itself.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/antlint_config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/antlint_config.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,34 @@
+
+
+
+
+ ([a-z0-9[\\d\\_\\.\\@\\{\\}\\$]]*)
+ ([a-z0-9[\\d\\-]]*)
+
+ ([a-z0-9][a-zA-Z0-9]*)
+ ([a-z0-9[\\d\\.\\_\\-]]*)
+
+ ^build.xml$|ant.xml$|antlib.xml$
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/capabilities_config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/capabilities_config.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,286 @@
+
+
+
+ 3.1.0.5
+
+
+ e32strt.exe
+ efile.exe
+ ekern.exe
+ installserver.exe
+ IntegrityCheck.exe
+ nandloader.exe
+ nandloader_unistore2.exe
+ sisregistryserver.exe
+ sospmmhandler.exe
+ usbmsapp.exe
+
+
+ AccServer.exe
+ akncapserver.exe
+ aknnfysrv.exe
+ appmngr.exe
+ CentRepToolServer.exe
+ cuimsg.exe
+ cuistartup.exe
+ cpfilehandler.exe
+ DcfRepSrv.exe
+ e32strt.exe
+ EasApplication.exe
+ efile.exe
+ einfoserver_00.exe
+ ekern.exe
+ ewsrv.exe
+ FileManager.exe
+ idle.exe
+ ImageEditor.exe
+ installserver.exe
+ IntegrityCheck.exe
+ integrityserver.exe
+ javadrmrlserver.exe
+ javahelperserver.exe
+ javasecurebackup.exe
+ mceserver.exe
+ MemScanServ.exe
+ Menu2.exe
+ mmcapp.exe
+ nandloader.exe
+ nandloader_unistore2.exe
+ ncpkickstart.exe
+ nsmldmhostserver1.exe
+ RfsServer.exe
+ SatServer.exe
+ sbengine.exe
+ sbenginenojava.exe
+ sisregistryserver.exe
+ Starter.exe
+ startup.exe
+ sysstart.exe
+ SWInstSvrUI.exe
+ SystemAMSCore.exe
+ TerminalControl.exe
+ usbmsapp.exe
+
+
+ ContentListingServer.exe
+ cuimusicplayer.exe
+ DRMPlayServer.exe
+ DRMRightsManager.exe
+ ekern.exe
+ hmidp92.exe
+ hmidp92_minimal.exe
+ ImageEditor.exe
+ LWPlayer.exe
+ MCServer.exe
+ MediaGallery2.exe
+ MediaPlayer.exe
+ MGLUtilityServer.exe
+ musicplayer.exe
+ MusicShopApp.exe
+ MusicStore.exe
+ nandloader.exe
+ nandloader_unistore2.exe
+ ncpkickstart.exe
+ Phone.exe
+ pwmdrmserv.exe
+ RightsServer.exe
+ WMDRMKeyServer.exe
+
+
+
+ AHDemoApp.exe
+ AknFSIDemo.exe
+ AknSoundTest.exe
+ AlignApp.exe
+ AnimApp.exe
+ ATSInterface.exe
+ Bappea.exe
+ BappeaProf.exe
+ bbcapslimited.exe
+ bbcapsmod.exe
+ bmpanapp.exe
+ btaudiotester.exe
+ BURTestServer.exe
+ cascade.exe
+ CbaApp.exe
+ ced.exe
+ ceddump.exe
+ centrepperftest.exe
+ closelogger.exe
+ Codetest.exe
+ ColorCard.exe
+ ColorTest.exe
+ ConnTest.exe
+ ConsoleUI.exe
+ crashread.exe
+ creator.exe
+ dlgapp.exe
+ disksuck.exe
+ dptester.exe
+ DRMEncryptor.exe
+ DRMUtilApp.exe
+ dtest.exe
+ EditConf.exe
+ epos_comasuplpostestermodulecfg.exe
+ eshell.exe
+ filebrowse.exe
+ filebrowser.exe
+ FileBrowserFileOpServer.exe
+ FtdGwcTest.exe
+ ftdbserver.exe
+ ftp.exe
+ Goofy.exe
+ gwstestexecute.exe
+ httpexampleclient.exe
+ htifilehlp.exe
+ htiipcommserver.exe
+ htiwatchdog.exe
+ htiframework.exe
+ layouttest.exe
+ Launcher.exe
+ MemFailAppStart.exe
+ memsuck.exe
+ MIDP2smstestrunner.exe
+ MIDP2Test.exe
+ mmctest.exe
+ OtaTestServer.exe
+ pipeconsumer.exe
+ pipeconsumer2.exe
+ pipeconsumer3.exe
+ pipeproducer.exe
+ pipeproducer2.exe
+ pipeproducer3.exe
+ PSYCRTester.exe
+ psytester.exe
+ ResFileDump.exe
+ resettest.exe
+ rfileloggerserver.exe
+ _rohid_ced.exe
+ _rohid_ceddump.exe
+ runtests.exe
+ rtautils.exe
+ rtaserver.exe
+ scheduletest.exe
+ Sender.exe
+ setcap.exe
+ spdhelper.exe
+ spdcommserver_bluetooth.exe
+ ShutDownTest.exe
+ ScreenGrabber.exe
+ spdcommserver.exe
+ statapi.exe
+ statlite.exe
+ stifstarter.exe
+ stiftestframework.exe
+ suspender.exe
+ SVGPerfTest.exe
+ systemswtest.exe
+ tefutilityserver.exe
+ tefcleanup.exe
+ testcontrol.exe
+ testexecute.exe
+ testexecutelogengine.exe
+ testexecutelogengineext.exe
+ testinvalidipcargs.exe
+ TestServerStarter.exe
+ trkapp.exe
+ TrkConsole.exe
+ TrkTcbServer.exe
+ XnThemeManagerTestApp.exe
+ xtatestapp.exe
+ taskmgr.exe
+ THelper.exe
+ t_acc.exe
+ t_cenrep.exe
+ t_cenreptrans.exe
+ t_cenrep_back_rest.exe
+ t_cenrep_back_rest_defect.exe
+ t_cenrep_back_rest_delete.exe
+ t_cenrep_cache.exe
+ t_cenrep_defects.exe
+ t_cenrep_meta.exe
+ t_cenrep_platsec.exe
+ t_cenrep_preq752.exe
+ t_cenrep_rfs.exe
+ t_cenrep_transactions.exe
+ t_certstore.exe
+ t_crypto.exe
+ t_deletedirallfiles.exe
+ t_deletefileallfiles.exe
+ t_disp.exe
+ t_display.exe
+ t_fsysbm.exe
+ t_keystore.exe
+ t_keypad.exe
+ t_killprocess.exe
+ t_mmc.exe
+ t_mmcpw.exe
+ t_oeexport.exe
+ t_oeexport1.exe
+ t_oomcenrepsrv.exe
+ t_security.exe
+ t_se_api.exe
+ t_ssi.exe
+ t_usb.exe
+ t_wlandriver.exe
+ ucccontrolte.exe
+ xkon.exe
+ xtatestapp.exe
+
+
+ crashread2.exe
+ d_exc.exe
+ d_exc_mc.norm.exe
+ d_exc_mc.sdram.exe
+ mobilecrashstarter.exe
+ selftestserver.exe
+ _aalto_e32strt.exe
+ _aalto_e32strt_minios.exe
+ _h2_e32strt.exe
+ _h2_ekern.exe
+ _h2_paging_ekern.exe
+ _h2_usbboot.exe
+ _h4hrp_bootldr.exe
+ _h4hrp_bootldr_me.exe
+ _h4hrp_e32strt.exe
+ _h4hrp_e32strt_me.exe
+ _h4hrp_ekern.exe
+ _h4hrp_paging_ekern.exe
+ _h4hrp_restartota.exe
+ _h4hrp_usbboot.exe
+ _h4hrp_usbmsapp.exe
+ _integrator_cm1136_e32strt.exe
+ _integrator_cm1136_ekern.exe
+ _lubbock_e32strt.exe
+ _lubbock_ekern.exe
+ _lubbock_paging_ekern.exe
+ _rapido_e32strt.exe
+ _rapido_e32strt_minios.exe
+ _rapido_ekern.exe
+ _reka2_ekern.exe
+ _teflon_e32strt.exe
+ _teflon_e32strt_minios.exe
+ _teflon_ekern.exe
+ _template_ekern.exe
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/diamonds_config.xml.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/diamonds_config.xml.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <#if (ant?keys?seq_contains('metadata.enable'))>
+
+ <#else>
+
+ #if>
+
+
+
+
+
+
+
+
+
+ <#if (ant?keys?seq_contains('validate.policy.log'))>
+
+ #if>
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/epydoc.conf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/epydoc.conf Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,15 @@
+[epydoc]
+
+output: html
+
+target: doc/api/python/
+
+docformat: restructuredtext
+
+verbosity: 2
+
+parse: yes
+introspect: no
+
+imports: no
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/helium_data_model.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/helium_data_model.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,2694 @@
+
+
+
+
+
+ archive.max.number.of.threads
+ allowed
+ integer
+ Set the maximum number of threads running for archiving (for a parallel job).
+
+
+ ats.ctc.host
+ recommended
+ string
+ 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
+
+
+ ats.testrun.name
+ recommended
+ string
+ Modify the test-run name if you have understanding of test.xml file or leave it as it is. Deafault value is a string consist of build id, product name, major and minor versions
+
+
+ ats.plan.name
+ recommended
+ string
+ Modify the plan name if you have understanding of test.xml file or leave it as it is. Deafault value is "plan"
+
+
+ ats.trace.enabled
+ recommended
+ string
+ Should be "True" if tracing is needed during the tests running on ATS3. Deafault value is "False", the values are case-sensitive.
+
+
+ ats.ctc.enabled
+ recommended
+ string
+ Should be "True" if coverage measurement and dynamic analysis (CTC) tool support is to be used by ATS. Deafault value is "False", the values are case-sensitive.
+
+
+ ats.email.list
+ recommended
+ string
+ 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.
+
+
+ ats.aste.email.list
+ recommended
+ string
+ 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.
+
+
+ ats.flashfiles.minlimit
+ recommended
+ string
+ Limit of minimum number of flash files to execute ats-test target, otherwise ATSDrop.zip will not be generated. Default value is "2" files.
+
+
+ ats.sisfiles.minlimit
+ recommended
+ string
+ 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.
+
+
+ ats.target.platform
+ recommended
+ string
+ Sets target platform for compiling test components. Default value is "armv5 urel".
+
+
+ ats.test.timeout
+ recommended
+ string
+ To set test commands execution time limit on ATS3 server, in seconds. Default value is "60".
+
+
+ ats.product.hwid
+ recommended
+ string
+ Product HardWare ID (HWID) attached to ATS. By default the value of HWID is not set.
+
+
+ ats.obey.pkgfiles.rule
+ recommended
+ string
+ 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.
+
+
+ tsrc.data.dir
+ allowed
+ string
+ The default value is "data" and refers to the 'data' directory under 'tsrc' directory.
+
+
+ tsrc.path.list
+ allowed
+ string
+ Contains list of the tsrc directories. Gets the list from system definition layer files. Assuming that the test components are defined already in te layers.sysdef.xml files to get compiled.
+ Not recommended, but the property value can be set if there are no system definition file(s), and tsrc directories paths to set manually.
+
+
+ ats.flash.images
+ allowed
+ string
+ List of flash images (.fpsx files) to install on the phone. It is not recommended to set the value manually however, it is possible.
+
+
+ ats.report.location
+ allowed
+ string
+ Sets ATS reports store location. Default location is "${publish.dir}/${publish.subdir}"
+
+
+ ats.drop.file
+ discouraged
+ string
+ Path for creation of the drop file during the build. Default is ATS3Drop.zip
+
+
+ ats.aste.drop.file
+ discouraged
+ string
+ Path for creation of the drop file during the build. Default is ATS3AsteDrop.zip
+
+
+ ats.product.name
+ must
+ string
+ Name of the product to be tested. For example: "PRODUCT"
+
+
+ ats.script.type
+ recommended
+ string
+ There are two types of ats script files to send drop to ATS server, "runx" and "import";
+ only difference is that with "import" ATS doesn't have to have access rights to testdrop.zip file,
+ as it is sent to the system over http and import doesn't need network shares.
+ If that is not needed "import" should not be used. Default value is "runx" as "import" involves heavy processing on ATS server
+
+
+ ats.drop.location
+ must
+ string
+ 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).
+
+
+ ats.aste.testrun.name
+ recommended
+ string
+ Modify the test-run name if you have understanding of test.xml file or leave it as it is. Deafault value is a string consist of build id, product name, major and minor versions
+
+
+ ats.aste.plan.name
+ recommended
+ string
+ Modify the plan name if you have understanding of test.xml file or leave it as it is. Deafault value is "plan"
+
+
+ disable.analysis.tool
+ allowed
+ string
+ Set this property to disable Analysis Tool. By default Analysis Tool will run with every build and send api metrics to diamonds but Analysis Tools takes time.
+
+
+ drop.file.counter
+ never
+ integer
+ Drop package file counter. Updates its value automatically when a new drop file is created for ATS.
+
+
+ ido.build.filter
+ never
+ string
+ Property is used to define ido build filters in the configuration file.
+
+
+ ats.server
+ must
+ string
+ 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.
+
+
+ ats.password
+ must
+ string
+ Password for ATS. This password might be different from NOE or HTTP/UNIX password.
+
+
+ ats.username
+ must
+ string
+ Username for ATS server. This is NOT the NOE or HTTP/UNIX username.
+
+
+ eunit.test.package
+ recommended
+ string
+ The EUnit package name to be unzipped on the environment, for executing EUnit tests."
+
+
+ eunitexerunner.flags
+ must
+ string
+ Flags for EUnit exerunner can be set by setting the value of this variable. The default flags are set to "/E S60AppEnv /R Off".
+
+
+ cache.dir
+ never
+ string
+ Root directory where Helium can store files on a temporary basis for a user.
+
+
+ log4j.cache.dir
+ allowed
+ string
+ Log directory for log4j.
+
+
+ build.cache.dir
+ never
+ string
+ Directory where Helium can store files on a temporary basis for a user per build.
+
+
+ build.cache.log.dir
+ never
+ string
+ Directory where Helium can store log files on a temporary basis for a user per build.
+
+
+ build.duplicates.log
+ discouraged
+ string
+ Default name of the build duplicates log file.
+
+
+ build.version
+ discouraged
+ string
+ Version of the build.
+
+
+ build.drive
+ recommended
+ string
+ Substed drive where the build is performed. if not defined then helium should search next available build drive letter and subst autometically
+
+
+ unsubst.after.build
+ allowed
+ string
+ 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.
+
+
+ build.id
+ discouraged
+ string
+ A unique ID for the build.
+
+
+ zip.wa.file
+ discouraged
+ string
+ A unique name for the WA Sources ZIP file.
+
+
+ binary.root
+ never
+ string
+ Defines location of binaries created in build. Used in check-capability target while generating capability scan report.
+
+
+ build.log
+ never
+ string
+ Defines name of the log file.
+
+
+ build.log.dir
+ discouraged
+ string
+ This is where the build logs are stored.
+
+
+ build.signal.status.dir
+ discouraged
+ string
+ This is where the signal related files are stored.
+
+
+ build.status.email.template
+ allowed
+ string
+ 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
+
+
+ build.logging.key.stages
+ discouraged
+ string
+ Defines which stages are considered as key stages and logged.
+
+
+ build.logging.start.stage
+ discouraged
+ string
+ Defines at which point logging is started.
+
+
+ build.name
+ must
+ string
+ 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.
+
+
+ build.output.dir
+ never
+ string
+ This is the directory where build output is placed.
+
+
+ build.property.cache.file
+ never
+ string
+ A file where persistent properties for a build should be stored.
+
+
+ build.sisfiles.dir
+ never
+ string
+ This is the directory where sisfiles are placed.
+
+
+ build.summary.file
+ discouraged
+ string
+ This is the file where build summary is stored.
+
+
+ build.system
+ allowed
+ string
+ This specifies which build system is used. Default for this is ebs You can use ec for Electric Cloud..
+
+
+ build.system.ebs
+ never
+ string
+ Defined if build.system is set to "ebs", which is the default.
+
+
+ build.system.sbs
+ never
+ string
+ Defined if ${build.system} is set to "sbs".
+
+
+ build.temp.dir
+ never
+ string
+ A directory for storing temporary build files.
+
+
+ build.type
+ recommended
+ string
+ The general type of the build. This is used for checking the tools environment. Potential values include core, ido, product.
+
+
+ build.errors.limit
+ allowed
+ number
+ Maximum allowable errors in a build.
+
+
+ canonical.sysdef.file
+ never
+ string
+ The path of the generated canonical System Definition file that contains all the input System Definition file content.
+
+
+ ccm.base.dir
+ allowed
+ string
+ Directory where CCM operations will be performed.
+
+
+ ccm.home.dir
+ must
+ string
+ Home directory of CCM operations.
+
+
+ ccm.database
+ must
+ string
+ Name of the CCM database to use. No default value.
+
+
+ ccm.cache.xml
+ allowed
+ string
+ Location of the cache.xml file which enables global synergy sessions.
+
+
+ ccm.database.path
+ discouraged
+ string
+ Path of the CCM database. No default value
+
+
+ ccm.enabled
+ allowed
+ string
+ Defines that property if you want the ccm-get-input step to be run during the build area preparation.
+
+
+ ccm.engine.host
+ must
+ string
+ Engine host of CCM database. No default value.
+
+
+ ccm.user.login
+ never
+ string
+ Contains the user name for CCM by reading the information from .netrc file.
+
+
+ ccm.user.password
+ never
+ string
+ Contains the password for CCM user name by reading the information from .netrc file.
+
+
+ ccmgetinput
+ allowed
+ string
+ To check which ccmgetinput helium will be use
+
+
+ ccmtask.python.script.file
+ never
+ string
+ The path for the Python script to handle the ccm task bridge to the ccm.py module.
+
+
+
+ cmaker.component.dir
+ never
+ string
+ Location of the cmaker component to install it.
+
+
+ cmaker.config.dir
+ discouraged
+ string
+ Directory where to execute cMaker.
+
+
+ cmaker.log.label
+ allowed
+ string
+ Custom label added to the cmaker logs.
+
+
+ cmaker.pp.version
+ recommended
+ string
+ Version of PP(NCP) configuration to be exported
+
+
+ cmaker.s60.version
+ recommended
+ string
+ Version of S60(require cmaker.pp.version to be set) configuration to be exported
+
+
+ common.overlay.dir
+ must
+ string
+ Location of the common overlay.
+
+
+ current.env.config
+ never
+ string
+ Internal property used for environment setting in the beginning of the build.
+
+
+ ctool.region.china
+ never
+ string
+ .
+
+
+ ctool.dir
+ allowed
+ string
+ Location of the configuration tool.
+
+
+ ctool.western.conf
+ allowed
+ string
+ configuration for the western variant.
+
+
+ ctool.china.conf
+ allowed
+ string
+ configuration for the chinese variant.
+
+
+ ctool.japan.conf
+ allowed
+ string
+ configuration for the japanese variant.
+
+
+ customer.makefile.target
+ never
+ string
+ Default makefile target for running customer iMaker ROM building.
+
+
+ data.model.file
+ never
+ string
+ The data model XML file for the Ant configuration.
+
+
+ data.model.parsed
+ never
+ string
+ The data model XML file for the Ant configuration parsed.
+
+
+ delta.ant.file
+ never
+ string
+ Temp file
+
+
+ delta.zip.delete.file
+ never
+ string
+ Special Instructions file for SymDEC
+
+
+ delta.zip.file
+ never
+ string
+ The zip file
+
+
+ delta.zip.location
+ never
+ string
+ Output location
+
+
+ delta.zip.temp.location
+ never
+ string
+ Temp location
+
+
+ delta.zip.file.size
+ must
+ string
+ 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
+
+
+
+ diamonds.compile.summary
+ never
+ string
+ Compilation summary file for diamonds.
+
+
+ diamonds.listener.configuration.file
+ never
+ string
+ Diamonds Configuration file with full path used for diamonds listener.
+
+
+ antlib.import.module.path
+ never
+ string
+ Path where ant XML files dynamically downloaded from jar file.
+
+
+ diamonds.build.id
+ never
+ string
+ The ID assigned to the build by the Diamonds server.
+
+
+ diamonds.build.url
+ never
+ string
+ The full URL to the build entry on the Diamonds server.
+
+
+ diamonds.host
+ discouraged
+ string
+ Diamonds server's host address.
+
+
+ diamonds.path
+ discouraged
+ string
+ Diamonds server build location.
+
+
+ diamonds.port
+ discouraged
+ string
+ Diamonds server port number.
+
+
+ diamonds.mail
+ discouraged
+ string
+ Email address of diamonds server.
+
+
+ diamonds.schema
+ discouraged
+ string
+ Diamonds rest api schema.
+
+
+ documentation.host
+ never
+ string
+ The host server where the Helium documentation is stored.
+
+
+ documentation.path.root
+ never
+ string
+ The root of the path on the host server where the Helium documentation is stored.
+
+
+ documentation.path
+ never
+ string
+ The full path on the host server where the Helium documentation is stored.
+
+
+ diamonds.target.list.to.log
+ discouraged
+ string
+ List of targets that should be logged in to Diamonds.
+
+
+
+ documentation.url.root
+ allowed
+ string
+ Root location of the Helium release documentation.
+
+
+
+ log.target
+ allowed
+ string
+ Enables logging of the start and end of individual targets.
+
+
+ log4j.configuration
+ never
+ string
+ Defines the path to log4j configuration.
+
+
+
+ call.cleanup
+ allowed
+ string
+ Ensures the cleanup-all target is called when the build finishes.
+
+
+ sbs.config
+ allowed
+ string
+ Configurations for which the components to be built(armv5,winscw)
+
+
+ skip.sbs.layer.generation
+ allowed
+ string
+ skip sbs layer filtering (true) for new schema and false for schema 1.4.0
+
+
+ ec.allow.duplicates
+ discouraged
+ string
+ Setting this to "1" will force xml2mak to generate only warnings (instead of errors) for duplicate components in the component list
+
+
+ ec.emake
+ discouraged
+ string
+ Location of emake tool.
+
+
+ ec.history.dir
+ discouraged
+ string
+ This specifies the directory where Electric Cloud history files are stored.
+ Currently defined in helium.ant.xml and mapped related to publish.root.dir
+
+
+ ec.historyfile
+ discouraged
+ string
+ Temporary location of the EC history file used by the current build.
+
+
+ ec.makefile.file
+ discouraged
+ string
+ Location of the Makefile generated to run the EC build.
+
+
+ ec.maxagents
+ allowed
+ string
+ Maximum number of agent to be used
+
+
+ ec.history.option
+ never
+ string
+ Should be create for single node build and merge for multi node build.
+
+
+ ec.mode
+ allowed
+ string
+ mode is either serial / parallel - default is parallel
+
+
+ week.number
+ allowed
+ string
+ this is used to identify the history files based on releases
+
+
+ branch.name
+ allowed
+ string
+ this along with week.number used to find proper history file based on releases.
+
+
+ ec.scripts.dir
+ discouraged
+ string
+ ec scripts location
+
+
+ ec.sysdef2make
+ never
+ string
+ Location of sysdef2make.pl file, which is used to translate system definition files to make files. Internal property that normally does not require changes.
+
+
+ ec.tools.dir
+ discouraged
+ string
+ Location of EC-tools. Passed to environment variable EC_TOOLS_DIR, when calling ecbuild_electric.cmd to execute Electric Cloud build.
+
+
+ email.ldap.server
+ allowed
+ string
+ Network address of the LDAP server.
+
+
+ ldap.organization.unit.rootdn
+ allowed
+ string
+ Organization root DN for LDAP server.
+
+
+ ldap.people.rootdn
+ allowed
+ string
+ People root DN for LDAP server.
+
+
+ email.ldap.rootdn
+ allowed
+ string
+ Root distinguished name of the LDAP server.
+
+
+ email.smtp.server
+ allowed
+ string
+ Network address of the SMTP server.
+
+
+ skip.ats.sending
+ allowed
+ boolean
+ Skips sending drop package file to ATS/ASTE after its creation.
+
+
+ skip.build.duplicates
+ allowed
+ boolean
+ This allow you to skip the build duplciates log generation.
+
+
+ skip.codescanner
+ allowed
+ boolean
+ Skip the codescanner target if true (true/yes/on).
+
+
+ skip.policy-validation
+ allowed
+ boolean
+ Skip the policy validation target if true (true/yes/on).
+
+
+ codescanner.config
+ allowed
+ string
+ Defines the location of a custom configuration for codescanner.
+
+
+ codescanner.format
+ allowed
+ string
+ Defines the format of Codescanner output (html|xml|std).
+
+
+ codescanner.log.unique
+ allowed
+ string
+ Defines if the folder for Codescanner output is unique (on|off).
+
+
+ file-comparison.bcomp_path
+ allowed
+ string
+ Defines the location of BComp.exe.
+
+
+ file-comparison.bcomp_conf
+ allowed
+ string
+ Defines the location of Beyond Compare configuration file.
+
+
+ file-comparison.left_side
+ must
+ string
+ The fileset id used on the left side of comparison.
+
+
+ file-comparison.right_side
+ must
+ string
+ The fileset id used on the right side of comparison.
+
+
+ file-comparison.output
+ allowed
+ string
+ Defines the location where comparison output should be put.
+
+
+ file-comparison.left_name
+ allowed
+ string
+ Defines the name of the folder for the left side of comparison.
+
+
+ file-comparison.right_name
+ allowed
+ string
+ Defines the name of the folder for the right side of comparison.
+
+
+ file-comparison.regexp.from
+ allowed
+ string
+ Defines the regexp pattern (in ANT-pattern style) which to mach from given filesets.
+
+
+ file-comparison.regexp.to
+ allowed
+ string
+ Defines the regexp pattern (in ANT-pattern style) what to use in (possible) replacement.
+
+
+ skip.compile-ec-patch
+ allowed
+ string
+ If defined it skips the buildtools emake patching.
+
+
+ ee_roms.log.file
+ never
+ string
+ ee log file location
+
+
+ ee.makefile.target
+ allowed
+ string
+ Defines make target that is run when creating engineer english images.
+
+
+ epocroot
+ discouraged
+ string
+ epocroot path
+
+
+ ext.java.lib.dir
+ never
+ string
+ External ant library path
+
+
+ genxml.output.file
+ never
+ string
+ Path for the output XML file generated by genxml used as input to EBS or EC.
+
+
+ genxml.output.file.suffix
+ never
+ string
+ 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.
+
+
+ helium.build.dir
+ never
+ string
+ The path where Helium-specific outputs are written to.
+
+
+ helium.doc.dir
+ never
+ string
+ Location of helium doc src.
+
+
+ helium.ccm.workarea.dir
+ allowed
+ string
+ The path to a Synergy work area used for updating Helium releases.
+
+
+ helium.svn.url
+ allowed
+ string
+ SVN URL where to find Helium.
+
+
+ helium.java.lib.dir
+ never
+ string
+ helium java library location
+
+
+ helium.svn.workarea.dir
+ allowed
+ string
+ The path to a Subversion work area used for updating Helium releases.
+
+
+ helium.dir
+ never
+ string
+ Defines the logical path to the helium directory used to start a build.
+
+
+ helium.version
+ never
+ string
+ Contains Helium version information
+
+
+
+ ido.codescanner.config
+ allowed
+ string
+ Defines the location of a custom configuration for codescanner.
+
+
+ ido.codescanner.output.dir
+ recommended
+ string
+ Defines the location of Codescanner output.
+
+
+ ido.codescanner.output.type
+ allowed
+ string
+ Defines the format of Codescanner output (html|xml|std).
+
+
+ ido.keep.old
+ allowed
+ string
+ Once define this property will enable the backup of old ado before doing the copy.
+
+
+ ido.template.robot.ready
+ discouraged
+ string
+ Location of the ready.txt FMPP template (override that property if you want to customize the content).
+
+
+ robot.email.to
+ discouraged
+ string
+ Comma seperated list of email address.
+
+
+ imaker.command
+ never
+ string
+ The path to the iMaker executable file.
+
+
+ imaker.engine
+ never
+ string
+ Defines which accelerator to use for running iMaker. (default value from build.system property)
+
+
+ imaker.fmpp.ant
+ never
+ string
+ Location of the Ant iMaker execution template.
+
+
+ imaker.fmpp.makefile
+ never
+ string
+ Location of the EC iMaker execution template.
+
+
+ tools.ivy.config.file
+ allowed
+ string
+ The tools dependencies Ivy settings configuration file.
+
+
+ loc.output.dir
+ never
+ string
+ The directory that will contain the zipped .loc files zip package.
+
+
+ loc.output.filename
+ never
+ string
+ The filename of the zip-loc-files target output zip file.
+
+
+ loc.temp.dir
+ never
+ string
+ The location of temporary directory used during zip-loc-files.
+
+
+ localisation.files.china
+ recommended
+ string
+ Localisation files for the China region.
+
+
+ localisation.files.japan
+ recommended
+ string
+ Localisation files for the Japan region.
+
+
+ localisation.files.western
+ recommended
+ string
+ Localisation files for the western region.
+
+
+ localisation.makefile.target
+ allowed
+ string
+ Makefile target that is executed when creating localised rom images (target localisation-roms).
+
+
+ localisation.s60locfiles.dir
+ never
+ string
+ Location of Series 60 localisation input files. Internal property that does not normally needs to be set.
+
+
+ localisation.tool
+ never
+ string
+ This key defines which tool should be used to localise the build area (localisation-mcss-localiser or localisation-s60-localiser).
+
+
+ localisation.buildfile
+ never
+ string
+ begining of the localisation buildfile name
+
+
+ isis_mktarget.list
+ never
+ string
+ Comma separated list of file names(main, what, check file names)
+
+
+ log.build.build_id
+ never
+ string
+ Diamonds logging information.
+
+
+ log.build.category
+ never
+ string
+ Diamonds logging information.
+
+
+ log.build.computer
+ never
+ string
+ Diamonds logging information.
+
+
+ log.build.user
+ never
+ string
+ Diamonds logging information.
+
+
+ md5.signature.file
+ never
+ string
+ Output location of md5 file
+
+
+ md5.split
+ never
+ string
+ Number of partial md5 files to use during creation
+
+
+ old.md5.file.present
+ allowed
+ string
+ Is a previous builds md5 being passed manually
+
+
+ metadata.db.file
+ never
+ string
+ The path to the SQLite metadata database file.
+
+
+ exclude.test.layers
+ allowed
+ string
+ Comma seperated excluded test layers. The test components (mentioned in the excluded test layers) will not be included in the ATS test drops
+
+
+ delta.exclude.commasep
+ allowed
+ string
+ Comma seperated excluded directories from the zip
+
+
+ old.md5.file
+ allowed
+ string
+ A previous builds md5
+
+
+ number.of.threads
+ allowed
+ string
+ how many parallel threads can run
+
+
+ overlays.log.file
+ never
+ string
+ The path to the overlays output log file.
+
+
+ parse_abld_what.tool
+ allowed
+ string
+ Location of the parse_what_log.pl tool.
+
+
+ prep.root.dir
+ recommended
+ string
+ The directory where new build area directories are created and substed to the build drive.
+
+
+ qmake.enabled
+ allowed
+ string
+ If defined the qmake stage will be enabled during compilation.
+
+
+ qt.dir
+ recommended
+ string
+ The location of the Qt framework to build.
+
+
+ qt.qmake.ant.template
+ allowed
+ string
+ The location of the ant template to run qmake commands.
+
+
+ qt.qmake.makefile.template
+ allowed
+ string
+ The location of the makefile template to run qmake commands.
+
+
+ qt.configure.args
+ allowed
+ string
+ The command lines argument passed to the configure tool.
+
+
+ qt.qmake.default.args
+ allowed
+ string
+ Setting default arguments to qMake command line, if the qmakeArgs is defined from the system definition file
+ then those arguments are discarded.
+
+
+ qt.configure.log.name
+ never
+ string
+ The name of the Qt configure output log.
+
+
+ absolute.prep.root.dir
+ never
+ string
+ This will convert absolute path for prep.root.dir if anybody use relative path.
+
+
+ prep.build.dir
+ never
+ string
+ This is the directory where the build area is prepared. Once created it is substed to the build.drive.
+
+
+ prep.delivery.modificationset
+ allowed
+ string
+ Location where the XML modificationset file should be generated. If not defined the file is not generated. (Usefull for CI systems)
+
+
+ publish.dir
+ must
+ string
+ Directory where the build is published (includes build.id)
+
+
+ publish.ccm.folder
+ allowed
+ string
+ Synergy folder where you want your task to be published.
+
+
+ publish.base.dir
+ never
+ string
+ Directory where all builds are published. Same as publish.dir but without build.id at the end
+
+
+ publish.fileset.ids
+ allowed
+ string
+ The fileset id which will be upload
+
+
+ publish.release.subdir
+ never
+ string
+ Subdir part of the publish release dir, relative to publish.root.dir
+
+
+ publish.release.dir
+ never
+ string
+ The directory where the release of this build is published to on the local network.
+
+
+ release.images.dir
+ never
+ string
+ The directory where flash images of build can be found
+
+
+ releasenotes.output
+ never
+ string
+ Location of output rtf file
+
+
+ releasenotes.output.dir
+ never
+ string
+ Defines the directory that will contain the output of release notes creation.
+
+
+ releasenotes.props
+ never
+ string
+ Property file with customer values
+
+
+ releasenotes.scan2log
+ never
+ string
+ Location of scan2log HTML file
+
+
+ releasenotes.temp.errors
+ never
+ string
+ Temp file
+
+
+ releasenotes.temp.output
+ never
+ string
+ Temp file
+
+
+ releasenotes.temp.props
+ never
+ string
+ Temp file
+
+
+ releasenotes.temp.props2
+ never
+ string
+ Temp file
+
+
+ releasenotes.template
+ never
+ string
+ Defines the name of the release note template used.
+
+
+ rombuild.using.var
+ allowed
+ boolean
+ Define this property if you build is using Symbian Binary Variation.
+
+
+ rombuild.buildinfo.template
+ never
+ string
+ FMPP template to generate a buildinfo makefile.
+
+
+ rombuild.buildinfo.output
+ never
+ string
+ Location of the output file.
+
+
+ rombuild.makefile.name
+ allowed
+ string
+ The filename of the output makefile generated by Helium for iMaker.
+
+
+ roms.spec.name
+ never
+ string
+ Used to select spec-section in rom image configuration for building. Used only for makefpsx.
+
+
+ s60.delta.config.prefix
+ allowed
+ string
+ Define the prefix part of the configuration name that builds delta variant.
+
+
+ s60.getenv.trigger.location
+ allowed
+ string
+ Define the location of the trigger file that should be used by CI.
+
+
+ getenv.tool.location
+ never
+ string
+ Defines the location of the getenv.pl script.
+
+
+ src.dir
+ never
+ string
+ java source directory location for helium library
+
+
+ subcon.log.file
+ never
+ string
+ The path to the subcon ROMs log.
+
+
+ subcon.makefile.target
+ never
+ string
+ The name of the makefile target for making subcon ROMs.
+
+
+ subcon.zips.dir
+ never
+ string
+ The directory where subcon zips are stored.
+
+
+ team
+ recommended
+ string
+ Used to specify which team configuration is being used. These configuration files are under /mc/mc_build/teams.
+
+
+ temp.build.dir
+ never
+ string
+ Directory to store temporary files generated during the process.
+
+
+ trace.log.file
+ never
+ string
+ The path to the trace ROMs log.
+
+
+ trace.makefile.target
+ never
+ string
+ The name of the makefile target for making trace ROMs.
+
+
+ uda.makefile.target
+ never
+ string
+ The name of the makefile target for making UDA images.
+
+
+ zip.ee.log.file
+ never
+ string
+ Defines log file where to record archiving of engineering english area.
+
+
+ zip.subcon.log.file
+ never
+ string
+ Defines log file where to record archiving of subcon environment.
+
+
+ zip.subcon_roms.log.file
+ never
+ string
+ The log file name for zipping subcon_roms.
+
+
+ zip.trace_roms.log.file
+ never
+ string
+ The log file name for zipping trace_roms.
+
+
+ zip.uda_roms.log.file
+ never
+ string
+ The log file name for zipping uda_roms.
+
+
+ zips.build.dir
+ never
+ string
+ This is the directory where build area is archived after the build has finished.
+
+
+ zips.flashfiles.dir
+ never
+ string
+ This is the directory where flash files are archived.
+
+
+ zips.loc.dir
+ never
+ string
+ This is the directory where build area is archived after the localisation.
+
+
+ zip.localised.log.file
+ never
+ string
+ The path to the localization zipping log file.
+
+
+ remote.builds.config.file
+ never
+ string
+ The path to the configuration file for remote builds.
+
+
+ local.free.space
+ recommended
+ string
+ The amount of free space needed on the build machine in Mbs.
+
+
+ localisation.language.file
+ never
+ string
+ Defined where to find languages.xml.
+
+
+ network.free.space
+ allowed
+ string
+ Amount of free space in MBs needed on the network drive where the build is published. The ``network.drive`` drive property must also be defined.
+
+
+ network.drive
+ recommended
+ string
+ The drive letter of a substed drive that maps to the network location where the build is published.
+
+
+ ec.build.class
+ never
+ string
+ Build class for Electric Cloud. No default value.
+
+
+ sbs.tools.config
+ allowed
+ string
+ tools configuration to be built
+
+
+ sbs.implicit.tools.build
+ allowed
+ boolean
+ uses tools config to be built before building the actual configuration.
+
+
+ sysdef.clean.configurations.list
+ allowed
+ string
+ Comma-separated list of System Definition configuration names to be built in the ido-prep-clean stage. If not defined the sysdef.configurations.list will be used to generate that configuration list.
+
+
+ sysdef.configurations.list
+ must
+ string
+ Comma-separated list of System Definition configuration names to be built in the compile-main stage.
+
+
+ compile.symbianos
+ never
+ string
+ Property must be set if the Symbian System Definition file is included in a build, in order to do full build from source.
+
+
+ publish.subdir
+ allowed
+ string
+ Subdir part of the publish dir, relative to publish.root.dir
+
+
+ error.email.to.list
+ never
+ string
+ List of email addresses where email is sent in case of build failure. No default value
+
+
+ release.dir.root
+ never
+ string
+ This is the directory which points to release-directory root.
+
+
+ enabled.ats
+ must
+ string
+ Value must be set to execute ats-test target. for example, 'value="1"'
+
+
+ enabled.aste
+ must
+ string
+ Value must be set to execute ats-aste target. for example, 'value="1"'
+
+
+ eunit.prepare.zip
+ must
+ string
+ Name of eunit zip file. Need to unzip into build area to start eunit test
+
+
+ core.build.version
+ allowed
+ string
+ This Defaults to the ${major.version}.${minor.version} combo and is available so that 1 number can be used (dot can be removed)
+
+
+ major.version
+ allowed
+ string
+ Part of a version information that is used to differentiate a build. Major version is the part that changes less frequently. Ie. year.
+
+
+ minor.version
+ allowed
+ string
+ Part of a version information that is used to differentiate a build. Minor version is the part that changes more frequntly. Ie week or a running number.
+
+
+ notes.database
+ recommended
+ string
+ The Notes database to do DCT5 upload to.
+
+
+ notes.release.dir
+ never
+ string
+ The DCT5 Release Notes SW Release Folder (where your build is Published to, so it can be obtained from there.)
+
+
+ notes.server
+ recommended
+ string
+ Lotus notes server name
+
+
+ prep.config.file
+ must
+ string
+ Defines configuration file used in prep-copy target. The file defines how files are copied and extracted into build area.
+
+
+ prep.delivery.file
+ must
+ string
+ Defines configuration file used in synergy operations (ccm-get-input for example). This file contains definition of projects that are checkouted or snapshotted.
+
+
+ product.family
+ must
+ string
+ In product builds defines the product family that the build product belong to.
+
+
+ product.list
+ must
+ string
+ 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.
+
+
+ product.printname
+ must
+ string
+ A printable name for a product used in release notes.
+
+
+ product.type
+ must
+ string
+ Project ID in release notes.
+
+
+ publish
+ recommended
+ string
+ Defines whether the build content will be published to the network.
+
+
+ is.published
+ never
+ string
+ The value is either true or false depending on whether the publish property is set or not.
+
+
+ publish.root.dir
+ recommended
+ string
+ Defines the root directory of publish feature. Should point into the root of the folder that will contain published nightly builds/releases.
+
+
+ releasenotes.logo
+ never
+ string
+ Defines the logo image file which will be used in release notes.
+
+
+ relnotes.config.dir
+ must
+ string
+ Defines the directory that contains release notes creation configuration files.
+
+
+ sis.config.file
+ recommended
+ string
+ Configuration file for SIS-file generation.
+
+
+ sms.number
+ never
+ string
+ sms numbers to report error or build information.
+
+
+ src
+ never
+ string
+ Source location for junit test class
+
+
+ src.classes
+ never
+ string
+ Java source files location for helium library
+
+
+ subcon.build.drive
+ never
+ string
+ Build drive for subcon build
+
+
+ subcon.prep.config.file
+ must
+ string
+ Subcon prep configuration file location
+
+
+ subcon.rombuild.config.file
+ never
+ string
+ A ROM configuration file for verifying subcon ROMS.
+
+
+ rombuild.config.file
+ must
+ string
+ This key defines where this parsed file will be located.
+
+
+ rombuild.config.file.parsed
+ never
+ string
+ Locates the parsed configuration for ROM builds.
+
+
+ ee.rom.output.dir
+ must
+ string
+ /output/development_flash_images/engineering_english/logs
+
+
+ core.rom.output.dir
+ must
+ string
+ /output/release_flash_images/rnd/core
+
+
+ selge.ini.network.dir
+ must
+ string
+ \\\\vcfiler02\\pub\\flash_user\\Crashbin/working\\selge_ini_prep
+
+
+ unix.username
+ never
+ string
+ Unix username.
+
+
+ unix.username.available
+ never
+ string
+ Equal 0 if the unix username if available
+
+
+ unix.password
+ never
+ string
+ Unix password
+
+
+ image_creation.copyto
+ never
+ string
+ Path for copying the image files default is output/images
+
+
+ image_creation.drive
+ never
+ string
+ Drive (environment) to use for creating images
+
+
+ variant.image.targetpath
+ never
+ string
+ Path for copying the variant image files default is under output/variant_images
+
+
+ zips.ee.spec.name
+ allowed
+ string
+ the value should be "ee"
+
+
+ zip.config.file
+ recommended
+ string
+ Path to the the zip specification file
+
+
+ zip.config.file.parsed
+ never
+ string
+ Path to the parsed file of zip specification file
+
+
+ unix.password.available
+ never
+ string
+ Equal 0 if the unix password if available
+
+
+ failonerror
+ never
+ boolean
+ failonerror attribute for exec
+
+
+ flash.config.enabled
+ recommended
+ flag
+ Define that property to enable config file generation.
+
+
+ compile.signal.input
+ never
+ string
+ Name of the signal input to be able to override the compile-main target.
+
+
+ compile.sysdef.dtd.stub
+ never
+ string
+ compile.sysdef.dtd.stub
+
+
+ ec.mem.limit
+ never
+ string
+ memory limit for EC execution. See user guide for more details
+
+
+ archive.using.ec
+ recommended
+ boolean
+ Set to true to enable EC zipping
+
+
+ build.drive.notdefined
+ never
+ flag
+ used to track if build.drive has predefined or not
+
+
+ ado.mapping.file
+ never
+ string
+ Path to a INI file that contains the mapping between the ADO from Synergy WA and it's location on the BA.
+
+
+ ado.quality.mapping.file
+ never
+ string
+ 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.
+
+
+ ido.romtree
+ never
+ string
+ Path to the build romtree; the location contains iby files. Default value is "${build.drive}${env.EPOCROOT}/epoc32/rom/include"
+
+
+ ido.cenrep.root
+ never
+ string
+ Path to the cenrep root. Default value is "${build.drive}${env.EPOCROOT}/epoc32/tools/cenrep/ido/src"
+
+
+ ido.cenrep.target
+ never
+ string
+ Path to the cenrep target directory. Default value is "${build.drive}${env.EPOCROOT}/epoc32/data/z/private/10202be9"
+
+
+ s60.build.robot.date
+ must
+ string
+ 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
+
+
+
+ s60.build.robot.path
+ must
+ string
+ Location where to publish the build robot delivery.
+
+
+ validate.properties.at.startup
+ never
+ string
+ display warnings at build startup if required properties are not defined.
+
+
+ tracing.csv.file
+ never
+ string
+ Path location for the memory tracing data captured by the TracingLogger.
+
+
+ imagetool.cfg.xml.parsed
+ never
+ string
+ Locates the parsed configuration for ImageTool in the build directory.
+
+
+ imagetool.destination
+ allowed
+ string
+ Location where to copy ImageTool and definitions.
+
+
+ imagetool.images
+ allowed
+ string
+ Defines comma separated list of image names.
+
+
+ imagetool.log
+ never
+ string
+ Defines name of the ImageTool log file.
+
+
+ imagetool.output.dir
+ never
+ string
+ Defines the location of ImageTool output files.
+
+
+ imagetool.tooldir
+ never
+ string
+ Defines the location of ImageTool.
+
+
+ read.build.int
+ allowed
+ string
+ This must be set to enable reading the build.number from a text database file located on the network. It allows automated build number incrementing.
+
+
+ build.int.db.dir
+ discouraged
+ string
+ The directory where the build integer database text files are stored.
+
+
+ create.bom.workarea.root
+ allowed
+ string
+ Your synergy work area directory (Set as the parent of the helium dir by default)
+
+
+ validate.policy.csv
+ recommended
+ string
+ Location of the CSV file that defines policy IDs.
+
+
+ validate.policy.ignoreroot
+ allowed
+ boolean
+ Skip the validation of the given root folders.
+
+
+ validate.policy.log
+ discouraged
+ string
+ Location validate policy xml log.
+
+
+ validate.policy.log.xml
+ discouraged
+ string
+ Location of the LogXML output file.
+
+
+ validate.policy.pattern
+ allowed
+ string
+ Comma separated list of pattern for policy validation. Defualt value is, distribution.policy.s60,distribution.policy
+
+
+
+ internal.api.config
+ allowed
+ string
+ Location of the config to parse the build content.
+
+
+ internal.api.output.prebuild
+ allowed
+ string
+ Location of the prebuild ado header content.
+
+
+ internal.api.output.postbuild
+ allowed
+ string
+ Location of the postbuild ado header content.
+
+
+ required.ant.version
+ never
+ string
+ The version of Apache Ant required by Helium.
+
+
+ sbs.hlm.scanlog
+ allowed
+ boolean
+ Enable helium scanlog for raptor. (experimental temporary solution)
+
+
+ ivy.file
+ never
+ string
+ Location of ivy jar.
+
+
+ ivy.filename
+ never
+ string
+ Name of ivy jar.
+
+
+ logging.output.file
+ never
+ string
+ Location of generated logging config.
+
+
+ last.major.helium.version
+ never
+ string
+ Last major helium version
+
+
+ database.file
+ never
+ string
+ Location of helium database
+
+
+ teamlevel.ci.system
+ allowed
+ boolean
+ Change release tag from team level to product level
+
+
+ teamlevel.folder.number
+ allowed
+ string
+ Folder name which contains those tasks to change the release tag
+
+
+ programlevel.release.tag
+ allowed
+ string
+ Program level release tag name
+
+
+ sms.server
+ allowed
+ string
+ Server that sends SMSs
+
+
+ data.model.xsl
+ allowed
+ string
+ Data Model extra content
+
+
+ ci.min.ba.maintain
+ allowed
+ string
+ Minimal number of build area to keep.
+
+
+ ci.session.file
+ allowed
+ string
+ Location of the session file which will be created by Helium.
+
+
+ ci.project.config
+ allowed
+ string
+ Location of the configuration that will be generated for the Cruise Control HLMSynergy modificationset.
+
+
+ signals.buildexception.signalname
+ allowed
+ string
+ Name of the signal configuration that is used when a signal is fired after catching a BuildException failure.
+
+
+ hlm.enable.asserts
+ recommended
+ string
+ Enable helium asserts. Build will fail if this is enabled and asserts fail.
+
+
+ python.modules.path
+ allowed
+ string
+ Python modules path.
+
+
+ metadata.dbfile
+ never
+ string
+ Location of build metadata database.
+
+
+ Environment
+
+ tools.ivy.config.file
+
+
+ Policy validation
+ Properties which drive the policy validation.
+ validate.policy.csv
+ validate.policy.log
+ validate.policy.ignoreroot
+ validate.policy.pattern
+
+
+ preparation
+ Preparing the build area.
+ prep.config.file
+ prep.delivery.file
+
+
+ localFreeSpace
+ Checking for disk space on local machine.
+ build.drive
+ local.free.space
+
+
+ remoteFreeSpace
+ Checking for disk space on network disk.
+ network.drive
+ network.free.space
+
+
+ compilation
+ Main compilation.
+ sysdef.configurations.list
+
+ build.system
+ build.system.ebs
+ ido.build.filter
+
+
+ sisFiles
+ Creating SIS files.
+ sis.config.file
+
+
+ rombuild
+ Creating ROM images.
+ rombuild.config.file
+ rombuild.config.file.parsed
+ roms.spec.name
+ rombuild.using.var
+
+
+
+ subcon
+ Creating a subcon build area and testing the creation of subcon images.
+ subcon.build.drive
+ subcon.prep.config.file
+ subcon.rombuild.config.file
+
+
+ archive
+ Zipping the build area.
+ zips.ee.spec.name
+ zip.config.file
+ zip.config.file.parsed
+ zips.build.dir
+ zip.wa.file
+
+
+ publish
+ Publishing the build to the network.
+ publish
+ is.published
+ publish.root.dir
+ publish.dir
+ publish.subdir
+ publish.base.dir
+ publish.fileset.ids
+ publish.release.subdir
+ publish.release.dir
+
+
+ mobilecrash
+ Mobilecrash configuration.
+ ee.rom.output.dir
+ core.rom.output.dir
+ selge.ini.network.dir
+
+
+ ReleaseNotes
+ Release notes generation.
+ relnotes.config.dir
+ releasenotes.logo
+ releasenotes.output
+ releasenotes.output.dir
+ releasenotes.props
+ releasenotes.scan2log
+ releasenotes.temp.errors
+ releasenotes.temp.output
+ releasenotes.temp.props
+ releasenotes.temp.props2
+ releasenotes.template
+
+
+ DeltaZip
+
+ md5.signature.file
+ md5.split
+ old.md5.file.present
+ delta.exclude.commasep
+ old.md5.file
+ delta.ant.file
+ delta.zip.delete.file
+ delta.zip.file
+ delta.zip.location
+ delta.zip.temp.location
+
+
+ CCM
+
+ ccm.base.dir
+ ccm.home.dir
+ ccm.database
+ ccm.enabled
+ ccmgetinput
+ ccm.database.path
+ ccm.engine.host
+ ccm.user.login
+ ccm.user.password
+ ccm.cache.xml
+
+
+ EC
+
+ ec.allow.duplicates
+ ec.emake
+ ec.history.dir
+ ec.historyfile
+ ec.makefile.file
+ ec.maxagents
+ ec.history.option
+ ec.scripts.dir
+ ec.sysdef2make
+ ec.tools.dir
+ ec.build.class
+ sbs.implicit.tools.build
+ sbs.tools.config
+ ec.mem.limit
+ skip.compile-ec-patch
+ archive.using.ec
+
+
+ cMaker
+
+ cmaker.component.dir
+ cmaker.config.dir
+ cmaker.pp.version
+ cmaker.s60.version
+ cmaker.log.label
+
+
+ IDO - Codescanner
+ Codescanner related Ant properties.
+ ido.codescanner.config
+ ido.codescanner.output.dir
+ ido.codescanner.output.type
+ skip.codescanner
+
+
+ iMaker - integration
+ New iMaker integration support.
+ rombuild.buildinfo.template
+ rombuild.buildinfo.output
+ imaker.engine
+
+
+ ImageTool
+ ImageTool configuration.
+ imagetool.destination
+ imagetool.images
+ imagetool.cfg.xml.parsed
+ imagetool.log
+ imagetool.output.dir
+ imagetool.tooldir
+
+
+ Diamonds
+
+ diamonds.host
+ diamonds.path
+ diamonds.port
+ diamonds.mail
+ log.target
+ call.cleanup
+ diamonds.listener.configuration.file
+ diamonds.compile.summary
+ diamonds.schema
+ diamonds.build.id
+ diamonds.build.url
+ diamonds.target.list.to.log
+
+
+ Localisation
+
+ loc.output.dir
+ loc.output.filename
+ loc.temp.dir
+ localisation.files.china
+ localisation.files.japan
+ localisation.files.western
+ localisation.makefile.target
+ localisation.s60locfiles.dir
+ localisation.tool
+ localisation.buildfile
+ isis_mktarget.list
+ localisation.language.file
+
+
+ ATS
+
+ ats.ctc.host
+ ats.testrun.name
+ ats.plan.name
+ ats.aste.testrun.name
+ ats.aste.plan.name
+ ats.trace.enabled
+ ats.ctc.enabled
+ ats.obey.pkgfiles.rule
+ ats.flashfiles.minlimit
+ ats.sisfiles.minlimit
+ ats.email.list
+ ats.target.platform
+ ats.flash.images
+ ats.test.timeout
+ ats.product.hwid
+ ats.drop.file
+ ats.aste.drop.file
+ ats.aste.email.list
+ ats.product.name
+ ats.script.type
+ ats.drop.location
+ ats.server
+ ats.password
+ ats.username
+ ats.report.location
+ enabled.ats
+ enabled.aste
+ skip.ats.sending
+ eunit.test.package
+ eunitexerunner.flags
+ drop.file.counter
+ exclude.test.layers
+
+
+ Company
+
+ email.ldap.server
+ email.ldap.rootdn
+ email.smtp.server
+ sms.server
+ ldap.organization.unit.rootdn
+ ldap.people.rootdn
+
+
+ Release
+
+ s60.build.robot.date
+ s60.build.robot.path
+
+
+ Qt
+
+ qt.dir
+ qt.configure.log.name
+ qt.qmake.ant.template
+ qt.qmake.makefile.template
+ qt.configure.args
+ qt.qmake.default.args
+ qmake.enabled
+
+
+ Misc
+
+ absolute.prep.root.dir
+ ado.mapping.file
+ ado.quality.mapping.file
+ antlib.import.module.path
+ binary.root
+ branch.name
+ build.cache.dir
+ build.cache.log.dir
+ build.drive.notdefined
+ build.duplicates.log
+ build.errors.limit
+ build.id
+ build.log.dir
+ build.signal.status.dir
+ build.status.email.template
+ build.log
+ build.logging.key.stages
+ build.logging.start.stage
+ build.name
+ build.output.dir
+ build.property.cache.file
+ build.sisfiles.dir
+ build.summary.file
+ build.system.sbs
+ build.temp.dir
+ build.type
+ build.version
+ cache.dir
+ log4j.cache.dir
+ canonical.sysdef.file
+ ccmtask.python.script.file
+ codescanner.config
+ codescanner.format
+ codescanner.log.unique
+ common.overlay.dir
+ compile.signal.input
+ compile.symbianos
+ compile.sysdef.dtd.stub
+ core.build.version
+ create.bom.workarea.root
+ ctool.china.conf
+ ctool.dir
+ ctool.japan.conf
+ ctool.region.china
+ ctool.western.conf
+ current.env.config
+ customer.makefile.target
+ data.model.file
+ data.model.parsed
+ database.file
+ delta.zip.file.size
+ disable.analysis.tool
+ documentation.host
+ documentation.path.root
+ documentation.path
+ documentation.url.root
+ ec.mode
+ ee.makefile.target
+ ee_roms.log.file
+ epocroot
+ error.email.to.list
+ eunit.prepare.zip
+ ext.java.lib.dir
+ failonerror
+ file-comparison.bcomp_conf
+ file-comparison.bcomp_path
+ file-comparison.left_name
+ file-comparison.left_side
+ file-comparison.output
+ file-comparison.regexp.from
+ file-comparison.regexp.to
+ file-comparison.right_name
+ file-comparison.right_side
+ genxml.output.file.suffix
+ genxml.output.file
+ getenv.tool.location
+ helium.build.dir
+ helium.doc.dir
+ helium.ccm.workarea.dir
+ helium.svn.url
+ helium.dir
+ helium.java.lib.dir
+ helium.svn.workarea.dir
+ helium.version
+ ido.cenrep.root
+ ido.cenrep.target
+ ido.keep.old
+ ido.romtree
+ ido.template.robot.ready
+ image_creation.copyto
+ image_creation.drive
+ imaker.command
+ imaker.fmpp.ant
+ imaker.fmpp.makefile
+ internal.api.config
+ internal.api.output.postbuild
+ internal.api.output.prebuild
+ ivy.file
+ ivy.filename
+ last.major.helium.version
+ log.build.build_id
+ log.build.category
+ log.build.computer
+ log.build.user
+ log4j.configuration
+ logging.output.file
+ major.version
+ metadata.db.file
+ minor.version
+ notes.database
+ notes.release.dir
+ notes.server
+ number.of.threads
+ overlays.log.file
+ parse_abld_what.tool
+ prep.build.dir
+ prep.delivery.modificationset
+ prep.root.dir
+ product.family
+ product.list
+ product.printname
+ product.type
+ programlevel.release.tag
+ publish.ccm.folder
+ read.build.int
+ build.int.db.dir
+ release.dir.root
+ remote.builds.config.file
+ required.ant.version
+ robot.email.to
+ rombuild.makefile.name
+ s60.delta.config.prefix
+ s60.getenv.trigger.location
+ sbs.config
+ skip.sbs.layer.generation
+ sbs.hlm.scanlog
+ skip.build.duplicates
+ skip.policy-validation
+ sms.number
+ src.classes
+ src.dir
+ src
+ subcon.log.file
+ subcon.makefile.target
+ subcon.zips.dir
+ sysdef.clean.configurations.list
+ team
+ teamlevel.ci.system
+ teamlevel.folder.number
+ temp.build.dir
+ trace.log.file
+ trace.makefile.target
+ tracing.csv.file
+ tsrc.data.dir
+ tsrc.path.list
+ uda.makefile.target
+ unix.password.available
+ unix.password
+ unix.username.available
+ unix.username
+ unsubst.after.build
+ validate.policy.log.xml
+ validate.properties.at.startup
+ variant.image.targetpath
+ week.number
+ zip.ee.log.file
+ zip.localised.log.file
+ zip.subcon.log.file
+ zip.subcon_roms.log.file
+ zip.trace_roms.log.file
+ zip.uda_roms.log.file
+ zips.flashfiles.dir
+ zips.loc.dir
+ flash.config.enabled
+ release.images.dir
+ data.model.xsl
+ ci.min.ba.maintain
+ ci.session.file
+ ci.project.config
+ archive.max.number.of.threads
+ signals.buildexception.signalname
+ hlm.enable.asserts
+ python.modules.path
+ metadata.dbfile
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/helium_data_model.xsl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/helium_data_model.xsl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/helium_distribution_test.cfg.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/helium_distribution_test.cfg.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/helium_eclipse_java_profile.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/helium_eclipse_java_profile.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/install/build-cruisecontrol-bin.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/install/build-cruisecontrol-bin.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,84 @@
+
+
+
+ Cruise Control installation script.
+
+
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/install/build-hccc.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/install/build-hccc.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,46 @@
+
+
+
+ Helium Cruise Control Customization installation script.
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/install/build-jep.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/install/build-jep.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,47 @@
+
+
+
+ Jep library installation script.
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/install/build-logilab-common.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/install/build-logilab-common.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,49 @@
+
+
+
+ Logilab library installation script.
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/install/build-xincluder.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/install/build-xincluder.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,53 @@
+
+
+
+ xincluder installation script.
+
+
+
+ unzipping artifact:
+ organisation=${artifact.organisation}
+ module=${artifact.module}
+ revision=${artifact.revision}
+ artifact=${artifact.artifact}
+ type=${artifact.type}
+ ext=${artifact.ext}
+ origin=${artifact.origin}
+ local=${artifact.local}
+ size=${artifact.size}
+ file=${artifact.file}
+ helium.dir=${helium.dir}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/7zip-4.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/7zip-4.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/ant-1.7.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/ant-1.7.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+ Apache Ant. Used for the core build process.
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/ccm-6.5.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/ccm-6.5.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/codescanner-2.0.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/codescanner-2.0.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/codescanner-2.1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/codescanner-2.1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.7.1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.7.1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.7.2-hc1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.7.2-hc1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.7.2.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.7.2.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.7.3.rc1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.7.3.rc1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.8.1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.8.1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/cruisecontrol-2.8.2.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/cruisecontrol-2.8.2.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/eggs-1.0.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/eggs-1.0.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/eggs_subcon-1.0.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/eggs_subcon-1.0.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/hccc-1-2.7.2.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/hccc-1-2.7.2.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/jars-1.0.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/jars-1.0.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/jars_subcon-1.0.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/jars_subcon-1.0.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/java-1.6.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/java-1.6.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/java13-1.3.1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/java13-1.3.1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/jep-2.3-java6.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/jep-2.3-java6.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/perl-5.6.1.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/perl-5.6.1.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/python-2.5.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/python-2.5.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/sbs-2.4.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/sbs-2.4.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/symsee-7.2.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/symsee-7.2.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/unzip-5.40.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/unzip-5.40.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/modules/xincluder-1.0d11.ivy.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/modules/xincluder-1.0d11.ivy.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/ivy/tools_ivy_settings.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/ivy/tools_ivy_settings.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/java_checkstyle_config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/java_checkstyle_config.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/logging.conf.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/logging.conf.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,58 @@
+<#--
+============================================================================
+Name : logging.conf.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:
+
+============================================================================
+-->
+[formatters]
+keys: simple,detailed
+
+[handlers]
+keys: console,syslog
+
+[loggers]
+keys: root,dp
+
+[formatter_simple]
+format: %(levelname)s:%(name)s:%(message)s
+
+[formatter_detailed]
+format: %(levelname)s:%(name)s: %(module)s:%(lineno)d: %(message)s
+
+[handler_console]
+class: StreamHandler
+args: []
+formatter: simple
+
+[handler_syslog]
+class: handlers.SysLogHandler
+args: [('myhost.mycorp.net', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER]
+formatter: detailed
+
+[logger_root]
+level: INFO
+handlers: syslog
+
+[logger_dp]
+<#if ant?keys?seq_contains("dp.debug") || ant?keys?seq_contains("debug")>
+level: DEBUG
+<#else>
+level: INFO
+#if>
+handlers: console
+qualname: dp
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/metadata_filter_config_default.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/metadata_filter_config_default.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/metadata_regex.csv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/metadata_regex.csv Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,47 @@
+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 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,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.*,
+ERROR,.*Traceback \(most recent call last\).*,
+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.*,
+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
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/pylintrc.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/pylintrc.txt Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,288 @@
+
+[MASTER]
+
+# Add to the black list. It should be a base name, not a
+# path. You may set this option multiple times.
+ignore=CVS
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# Set the cache size for astng objects.
+cache-size=500
+
+# List of plugins (as comma separated values of python modules names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+
+[MESSAGES CONTROL]
+
+# Enable only checker(s) with the given id(s). This option conflicts with the
+# disable-checker option
+#enable-checker=
+
+# Enable all checker(s) except those with the given id(s). This option
+# conflicts with the enable-checker option
+#disable-checker=
+
+# Enable all messages in the listed categories.
+#enable-msg-cat=
+
+# Disable all messages in the listed categories.
+#disable-msg-cat=
+
+# Enable the message(s) with the given id(s).
+#enable-msg=
+
+# Disable the message(s) with the given id(s).
+disable-msg=C0301,W0401,W0611,W0614,R0801,W0402,R0914
+
+
+[REPORTS]
+
+# set the output format. Available formats are text, parseable, colorized, msvs
+# (visual studio) and html
+output-format=text
+
+# Include message's id in output
+include-ids=yes
+
+# Put messages in a separate file for each module / package specified on the
+# command line instead of printing them on stdout. Reports (if any) will be
+# written in a file name "pylint_global.[txt|html]".
+files-output=no
+
+# Tells wether to display a full report or only the messages
+reports=yes
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note).You have access to the variables errors warning, statement which
+# respectivly contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (R0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Add a comment according to your evaluation note. This is used by the global
+# evaluation report (R0004).
+comment=no
+
+# Enable the report(s) with the given id(s).
+#enable-report=
+
+# Disable the report(s) with the given id(s).
+#disable-report=
+
+
+# checks for :
+# * doc strings
+# * modules / classes / functions / methods / arguments / variables name
+# * number of arguments, local variables, branchs, returns and statements in
+# functions, methods
+# * required module attributes
+# * dangerous default values as arguments
+# * redefinition of function / method / class
+# * uses of the global statement
+#
+[BASIC]
+
+# Required attributes for module, separated by a comma
+required-attributes=
+
+# Regular expression which should only match functions or classes name which do
+# not require a docstring
+no-docstring-rgx=__.*__
+
+# Regular expression which should only match correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression which should only match correct module level names
+const-rgx=(([A-Z_][A-Z1-9_]*)|(__.*__)|(_[a-zA-Z0-9_]{2,40}))$
+
+# Regular expression which should only match correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression which should only match correct function names
+function-rgx=[a-z_][a-zA-Z0-9_]{2,40}$
+
+# Regular expression which should only match correct method names
+method-rgx=[a-z_][a-zA-Z0-9_]{2,40}$
+
+# Regular expression which should only match correct instance attribute names
+attr-rgx=[a-z_][a-zA-Z0-9_]{2,40}$
+
+# Regular expression which should only match correct argument names
+argument-rgx=[a-z_][a-zA-Z0-9_]{2,30}$
+
+# Regular expression which should only match correct variable names
+variable-rgx=[a-z_][a-zA-Z0-9_]{2,30}$
+
+# Regular expression which should only match correct list comprehension /
+# generator expression variable names
+inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=i,j,k,ex,Run,_
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,toto,tutu,tata
+
+# List of builtins function names that should not be used, separated by a comma
+bad-functions=map,filter,apply,input
+
+
+# try to find bugs in the code using type inference
+#
+[TYPECHECK]
+
+# Tells wether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# When zope mode is activated, consider the acquired-members option to ignore
+# access to some undefined attributes.
+zope=no
+
+# List of members which are usually get through zope's acquisition mecanism and
+# so shouldn't trigger E0201 when accessed (need zope=yes to be considered).
+acquired-members=REQUEST,acl_users,aq_parent
+
+
+# checks for
+# * unused variables / imports
+# * undefined variables
+# * redefinition of variable from builtins or from an outer scope
+# * use of variable before assigment
+#
+[VARIABLES]
+
+# Tells wether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching names used for dummy variables (i.e. not used).
+dummy-variables-rgx=_|dummy
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=
+
+
+# checks for :
+# * methods without self as first argument
+# * overridden methods signature
+# * access only to existant members via self
+# * attributes not defined in the __init__ method
+# * supported interfaces implementation
+# * unreachable code
+#
+[CLASSES]
+
+# List of interface methods to ignore, separated by a comma. This is used for
+# instance to not check methods defines in Zope's Interface base class.
+ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+
+# checks for sign of poor/misdesign:
+# * number of methods, attributes, local variables...
+# * size, complexity of functions, methods
+#
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branchs=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+
+# checks for
+# * external modules dependencies
+# * relative / wildcard imports
+# * cyclic imports
+# * uses of deprecated modules
+#
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report R0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report R0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report R0402 must
+# not be disabled)
+int-import-graph=
+
+
+# checks for :
+# * unauthorized constructions
+# * strict indentation
+# * line length
+# * use of <> instead of !=
+#
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=80
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
+# tab).
+indent-string=' '
+
+
+# checks for:
+# * warning notes in the code like FIXME, XXX
+# * PEP 263: source code with non ascii character but no encoding declaration
+#
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO
+
+
+# checks for similarities and duplicated code. This computation may be
+# memory / CPU intensive, so you should disable it if you experiments some
+# problems.
+#
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/signaling_config_default.ant.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/signaling_config_default.ant.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,377 @@
+
+
+
+
+ Definitions of helium signals.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ defaultSignalAlwaysNotifier: Signal: ${signal.name}
+ defaultSignalAlwaysNotifier: Status: ${signal.status}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/config/version.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/config/version.txt Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,4 @@
+#Helium version - DO NOT EDIT
+#Tue Sep 22 14:15:51 IST 2009
+last.major.helium.version=5.0
+helium.version=6.0.1
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/images/bom.png
Binary file buildframework/helium/doc/images/bom.png has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/images/dp.png
Binary file buildframework/helium/doc/images/dp.png has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/index.html Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,22 @@
+
+
+
+
+
+Helium Documentation Index
+
+
+
+
+
Helium Documentation
+
+ Helium Documentation
+
+ If this link does not work, please run hlm docs from the /helium directory and try again.
+
+ The main Helium documentation is HTML generated from the RST text documents.
+
+ ####
+ #### Put a link for those types that are in this javadoc run
+ #### and have nested elements (since nested-nested elements
+ #### is the only info we are not showing for each nested element)
+ ####
+ #if( $elementDoc.sourceIncluded() && ($elementDoc.getNestedElements().hasMoreElements() || $elementDoc.isTagged()))
+
+ <$element> ...
+
+ #else
+ <$element>
+
+ #if ( ! $elementDoc.sourceIncluded() )
+ (Of type ${elementDoc.getAntName()} )
+ #end
+ #end
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/antdoclet/html/taskindex.vm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/antdoclet/html/taskindex.vm Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,65 @@
+
+
+##
+## This is an Velocity template for generating an HTML index
+## of the Ant Task/Types
+##
+## Objects expected in context:
+##
+## $title - Project title (of type String)
+## $antroot - (of type AntRoot)
+##
+
+
+ $title Ant Tasks
+
+
+
+
+
+
+
+
+<@helium_api_html_footer/>
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/help.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/help.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,78 @@
+<#--
+============================================================================
+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"/>
+
+<@helium_api_header title="Helium API Help"/>
+
+
+
+ How This API Document Is Organized
+
+
+
+
+ This API document describes the Helium user API (Application Programming Interface) in terms of its Ant targets, properties and other configuration. It has pages corresponding to the items in the navigation bar, described as follows:
+
+
Project
+
+ A project corresponds to an Apache Ant XML file. Each project contains a number of targets.
+
+
Target
+
+ Each target has its own page listing the following sections:
+
+
Location
+
Description
+
Property dependencies. A list of Ant properties that this target uses and their edit status requirements.
+
Target dependencies. A list of other targets that will be called before or during this target execution.
+
+
+ Target dependencies legend:
+
+
Blue arrows point to direct dependencies.
+
Green arrows point to antcall and runtarget dependencies.
+
+
+
+
+
+
+
+
Property Group
+ A list of Property groups that group together related configuration elements, their usage requirements within that group and their edit status requirements..
+
+
Property
+ Each property has its own page listing the following sections:
+
+
Description
+
Usage
+
Type
+
Edit Status : The values could be must, recommended, allowed, discouraged or never.
+
+
+
+
+
+<@helium_api_html_footer/>
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/index-1.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/index-1.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,55 @@
+<#--
+============================================================================
+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"/>
+
+<@helium_api_header title="Index (Helium API)"/>
+
+
+
+
+
+
+<@helium_api_html_footer/>
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/index.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/index.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,50 @@
+<#--
+============================================================================
+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"/>
+
+
+
+<@helium_api_head_section title="Helium API"/>
+
+
+
+
+
+
+
+
+
+
+
+
frame alert
+
+this document is designed to be viewed using the frames feature. if you see this message, you are using a non-frame-capable web client.
+
+link tonon-frame version.
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/macro.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/macro.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,51 @@
+<#--
+============================================================================
+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.project.macro as macro>
+<@pp.changeOutputFile name="macro-${macro.name}.html" />
+
+<@helium_api_header title="Macro ${macro.name}"/>
+
+
+
+
+
+
+
+<@helium_api_html_footer/>
+
+#list>
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/overview-frame.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/overview-frame.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,78 @@
+<#--
+============================================================================
+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"/>
+
+<@helium_api_head_section title="Overview (Helium API)"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All targets
+
+ All properties
+
+ All macros
+
+
+
+ Projects
+
+ <#assign projectlist=doc.antDatabase.project.name?sort>
+ <#list projectlist as project>
+ ${project}
+
+ #list>
+
+
+ Property groups
+
+ <#assign grouplist=data.heliumDataModel.group.name?sort>
+ <#list grouplist as group>
+ ${group}
+
+ #list>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/overview-summary.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/overview-summary.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,79 @@
+<#--
+============================================================================
+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"/>
+
+<@helium_api_header title="Helium API"/>
+
+
+
+
Helium API
+
+
+
+ This is the API specification for the Helium build toolkit.
+
+
+<@helium_api_html_footer/>
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/project-frame.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/project-frame.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -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.project as project>
+<@pp.changeOutputFile name="project-frame-${project.name}.html" />
+
+
+
+
+<#include "api.ftllib"/>
+
+<@helium_api_head_section title="Project (Helium API)"/>
+
+
+
+
+
+
+
+#list>
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/project.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/project.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,102 @@
+<#--
+============================================================================
+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.project as project>
+<@pp.changeOutputFile name="project-${project.name}.html" />
+
+<@helium_api_header title="Project ${project.name}"/>
+
+
+
+
+
+
+<@helium_api_html_footer/>
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/api/properties-table.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/api/properties-table.js Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,492 @@
+/*
+ SortTable
+ version 2
+ 7th April 2007
+ Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
+
+ Instructions:
+ Download this file
+ Add to your HTML
+ Add class="sortable" to any table you'd like to make sortable
+ Click on the headers to sort
+
+ Thanks to many, many people for contributions and suggestions.
+ Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
+ This basically means: do what you want with it.
+*/
+
+
+var stIsIE = /*@cc_on!@*/false;
+
+sorttable = {
+ init: function() {
+ // quit if this function has already been called
+ if (arguments.callee.done) return;
+ // flag this function so we don't do the same thing twice
+ arguments.callee.done = true;
+ // kill the timer
+ if (_timer) clearInterval(_timer);
+
+ if (!document.createElement || !document.getElementsByTagName) return;
+
+ sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
+
+ forEach(document.getElementsByTagName('table'), function(table) {
+ if (table.className.search(/\bsortable\b/) != -1) {
+ sorttable.makeSortable(table);
+ }
+ });
+
+ },
+
+ makeSortable: function(table) {
+ if (table.getElementsByTagName('thead').length == 0) {
+ // table doesn't have a tHead. Since it should have, create one and
+ // put the first table row in it.
+ the = document.createElement('thead');
+ the.appendChild(table.rows[0]);
+ table.insertBefore(the,table.firstChild);
+ }
+ // Safari doesn't support table.tHead, sigh
+ if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
+
+ if (table.tHead.rows.length != 1) return; // can't cope with two header rows
+
+ // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
+ // "total" rows, for example). This is B&R, since what you're supposed
+ // to do is put them in a tfoot. So, if there are sortbottom rows,
+ // for backwards compatibility, move them to tfoot (creating it if needed).
+ sortbottomrows = [];
+ for (var i=0; i5' : ' ▴';
+ this.appendChild(sortrevind);
+ return;
+ }
+ if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
+ // if we're already sorted by this column in reverse, just
+ // re-reverse the table, which is quicker
+ sorttable.reverse(this.sorttable_tbody);
+ this.className = this.className.replace('sorttable_sorted_reverse',
+ 'sorttable_sorted');
+ this.removeChild(document.getElementById('sorttable_sortrevind'));
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? ' 6' : ' ▾';
+ this.appendChild(sortfwdind);
+ return;
+ }
+
+ // remove sorttable_sorted classes
+ theadrow = this.parentNode;
+ forEach(theadrow.childNodes, function(cell) {
+ if (cell.nodeType == 1) { // an element
+ cell.className = cell.className.replace('sorttable_sorted_reverse','');
+ cell.className = cell.className.replace('sorttable_sorted','');
+ }
+ });
+ sortfwdind = document.getElementById('sorttable_sortfwdind');
+ if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
+ sortrevind = document.getElementById('sorttable_sortrevind');
+ if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
+
+ this.className += ' sorttable_sorted';
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? ' 6' : ' ▾';
+ this.appendChild(sortfwdind);
+
+ // build an array to sort. This is a Schwartzian transform thing,
+ // i.e., we "decorate" each row with the actual sort key,
+ // sort based on the sort keys, and then put the rows back in order
+ // which is a lot faster because you only do getInnerText once per row
+ row_array = [];
+ col = this.sorttable_columnindex;
+ rows = this.sorttable_tbody.rows;
+ for (var j=0; j 12) {
+ // definitely dd/mm
+ return sorttable.sort_ddmm;
+ } else if (second > 12) {
+ return sorttable.sort_mmdd;
+ } else {
+ // looks like a date, but we can't tell which, so assume
+ // that it's dd/mm (English imperialism!) and keep looking
+ sortfn = sorttable.sort_ddmm;
+ }
+ }
+ }
+ }
+ return sortfn;
+ },
+
+ getInnerText: function(node) {
+ // gets the text we want to use for sorting for a cell.
+ // strips leading and trailing whitespace.
+ // this is *not* a generic getInnerText function; it's special to sorttable.
+ // for example, you can override the cell text with a customkey attribute.
+ // it also gets .value for fields.
+
+ hasInputs = (typeof node.getElementsByTagName == 'function') &&
+ node.getElementsByTagName('input').length;
+
+ if (node.getAttribute("sorttable_customkey") != null) {
+ return node.getAttribute("sorttable_customkey");
+ }
+ else if (typeof node.textContent != 'undefined' && !hasInputs) {
+ return node.textContent.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.innerText != 'undefined' && !hasInputs) {
+ return node.innerText.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.text != 'undefined' && !hasInputs) {
+ return node.text.replace(/^\s+|\s+$/g, '');
+ }
+ else {
+ switch (node.nodeType) {
+ case 3:
+ if (node.nodeName.toLowerCase() == 'input') {
+ return node.value.replace(/^\s+|\s+$/g, '');
+ }
+ case 4:
+ return node.nodeValue.replace(/^\s+|\s+$/g, '');
+ break;
+ case 1:
+ case 11:
+ var innerText = '';
+ for (var i = 0; i < node.childNodes.length; i++) {
+ innerText += sorttable.getInnerText(node.childNodes[i]);
+ }
+ return innerText.replace(/^\s+|\s+$/g, '');
+ break;
+ default:
+ return '';
+ }
+ }
+ },
+
+ reverse: function(tbody) {
+ // reverse the rows in a tbody
+ newrows = [];
+ for (var i=0; i=0; i--) {
+ tbody.appendChild(newrows[i]);
+ }
+ delete newrows;
+ },
+
+ /* sort functions
+ each sort function takes two parameters, a and b
+ you are comparing a[0] and b[0] */
+ sort_numeric: function(a,b) {
+ aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(aa)) aa = 0;
+ bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(bb)) bb = 0;
+ return aa-bb;
+ },
+ sort_alpha: function(a,b) {
+ if (a[0]==b[0]) return 0;
+ if (a[0] 0 ) {
+ var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
+ swap = true;
+ }
+ } // for
+ t--;
+
+ if (!swap) break;
+
+ for(var i = t; i > b; --i) {
+ if ( comp_func(list[i], list[i-1]) < 0 ) {
+ var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
+ swap = true;
+ }
+ } // for
+ b++;
+
+ } // while(swap)
+ }
+}
+
+/* ******************************************************************
+ Supporting functions: bundled here to avoid depending on a library
+ ****************************************************************** */
+
+// Dean Edwards/Matthias Miller/John Resig
+
+/* for Mozilla/Opera9 */
+if (document.addEventListener) {
+ document.addEventListener("DOMContentLoaded", sorttable.init, false);
+}
+
+/* for Internet Explorer */
+/*@cc_on @*/
+/*@if (@_win32)
+ document.write("
+
+Use a script when prototyping or a more specialized operation is needed in only one place. Embedded scripts should generally be kept as short as possible.
+
+.. index::
+ single: Java conventions
+
+Java conventions
+================
+
+.. index::
+ single: Ant Task Documentions
+
+Ant task documentation
+----------------------
+
+* Javadoc comment of a Ant task class should include the Ant-specific tag ``@ant.task``. It accepts three "attributes": ``name``, ``category`` and ``ignored``. When ``ignored=true``, the class will not be included in the documentation. For example::
+
+ /**
+ * Code Sample for Ant Task class Comments
+ * @ant.task name="copy" category="filesystem"
+ * @ant.task ignored="true"
+ */
+ public class Copy
+
+* The task properties documentation is extracted from the property getter/setter methods. The tags are ``@ant.required`` and ``@ant.not-required`` which indicate if the property is required or not required. For example::
+
+ /**
+ * Code Sample for Ant Task property Comments
+ * @ant.required
+ * Default is false.
+ */
+ public void setOverwrite(boolean overwrite){
+ this.forceOverwrite = overwrite;
+ }
+
+All custom tasks should be commented in this way.
+
+.. index::
+ single: File Execution
+
+File execution
+==============
+
+File execution should not depend on the extension of the file. The appropriate executable should be used to run the script, e.g::
+
+ python foo.py
+
+not::
+
+ foo.py
+
+
+.. index::
+ single: Documentation conventions
+
+Documentation conventions
+=========================
+
+Standalone documents are written in reStructuredText_ format.
+
+.. _reStructuredText : http://docutils.sourceforge.net/rst.html
+
+
+.. index::
+ single: Python conventions
+
+Python conventions
+=========================
+
+Specific conventions
+--------------------
+
+Python Code Indentation
+```````````````````````
+
+* Indents are 4 spaces. Tabs should not be used.
+
+
+Documentation
+`````````````
+
+* Docstrings are written in reStructuredText_ format, according to `PEP 257 - Docstring Conventions`_. Documentation is extracted using Epydoc_, so the reStructuredText tags that Epydoc recognises are used.
+
+.. _`PEP 257 - Docstring Conventions` : http://www.python.org/dev/peps/pep-0257/
+.. _Epydoc : http://epydoc.sourceforge.net/
+
+
+Unit testing
+````````````
+
+* Unit tests are written for each Python module.
+* They should follow the Nose_ testing framework conventions.
+* The test suite is run by calling ``hlm py-unittest``.
+
+.. _Nose : http://somethingaboutorange.com/mrl/projects/nose/
+
+
+Lint
+````
+
+* Always check your code with pylint_ before checking it in.
+* Aim for pylint_ score >= 8.
+
+.. _pylint: http://www.logilab.org/857
+
+
+Reference coding standards
+--------------------------
+
+These reference standards are used for all conventions not covered above.
+
+* `PEP 8 - Style Guide for Python Code`_.
+* `Twisted Coding Standard`_ (but with a grain of salt):
+
+.. _`PEP 8 - Style Guide for Python Code` : http://www.python.org/dev/peps/pep-0008/
+.. _`Twisted Coding Standard` : http://twistedmatrix.com/trac/browser/trunk/doc/development/policy/coding-standard.xhtml?format=raw
+
+
+.. index::
+ single: Quality Checklist
+
+Quality checklist
+=================
+
+'''Python'''
+
+* All modules have a single description line in the module comment.
+
+.. index::
+ single: Bad Word Scanner configuration
+
+Bad Word Scanner configuration
+==============================
+
+This section will probably only ever be used by a helium contributor:
+
+Bad word scanner scans the helium code for the words that should not be in the helium source code. You need to include the bad words
+in a .cvs file and scan the directory of the source code. Bad words include Nokia product names, competitors product names etc.
+
+Run the following command ::
+
+ hlm check-bad-words
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/conf.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/conf.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,181 @@
+# -*- coding: utf-8 -*-
+#============================================================================
+#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:
+#===============================================================================
+#
+# Helium Documentation documentation build configuration file, created by
+# sphinx-quickstart on Fri May 09 09:49:44 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('some/directory'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+#extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'Helium'
+copyright = '2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. License: http://www.eclipse.org/legal/epl-v10.html'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = '0.23'
+# The full version, including alpha/beta/rc tags.
+release = '0.23'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directories, that shouldn't be searched
+# for source files.
+#exclude_dirs = []
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'default.css'
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# " v documentation".
+#html_title = None
+
+# The name of an image file (within the static path) to place at the top of
+# the sidebar.
+html_logo = 'helium_pallot_small.jpg'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['.static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+html_sidebars = {
+ 'index': 'sidebar.html'
+}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = False
+
+# If true, the reST sources are included in the HTML build as _sources/.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Helium doc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+ ('index', 'Helium.tex', 'Helium Documentation', 'The Helium Team', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/default.css
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/default.css Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,842 @@
+/**
+ * Sphinx Doc Design
+ */
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+/* :::: LAYOUT :::: */
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: white;
+ padding: 0 20px 30px 20px;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.clearer {
+ clear: both;
+}
+
+div.footer {
+ color: #fff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ color: #fff;
+ width: 100%;
+ height: 30px;
+ line-height: 30px;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+div.related a {
+ color: white;
+}
+
+/* ::: TOC :::: */
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: white;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ list-style: none;
+ color: white;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+/* :::: MODULE CLOUD :::: */
+div.modulecloud {
+ margin: -5px 10px 5px 10px;
+ padding: 10px;
+ line-height: 160%;
+ border: 1px solid #cbe7e5;
+ background-color: #f2fbfd;
+}
+
+div.modulecloud a {
+ padding: 0 5px 0 5px;
+}
+
+/* :::: SEARCH :::: */
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* :::: COMMON FORM STYLES :::: */
+
+div.actions {
+ padding: 5px 10px 5px 10px;
+ border-top: 1px solid #cbe7e5;
+ border-bottom: 1px solid #cbe7e5;
+ background-color: #e0f6f4;
+}
+
+form dl {
+ color: #333;
+}
+
+form dt {
+ clear: both;
+ float: left;
+ min-width: 110px;
+ margin-right: 10px;
+ padding-top: 2px;
+}
+
+input#homepage {
+ display: none;
+}
+
+div.error {
+ margin: 5px 20px 0 0;
+ padding: 5px;
+ border: 1px solid #d00;
+ font-weight: bold;
+}
+
+/* :::: INLINE COMMENTS :::: */
+
+div.inlinecomments {
+ position: absolute;
+ right: 20px;
+}
+
+div.inlinecomments a.bubble {
+ display: block;
+ float: right;
+ background-image: url(style/comment.png);
+ background-repeat: no-repeat;
+ width: 25px;
+ height: 25px;
+ text-align: center;
+ padding-top: 3px;
+ font-size: 0.9em;
+ line-height: 14px;
+ font-weight: bold;
+ color: black;
+}
+
+div.inlinecomments a.bubble span {
+ display: none;
+}
+
+div.inlinecomments a.emptybubble {
+ background-image: url(style/nocomment.png);
+}
+
+div.inlinecomments a.bubble:hover {
+ background-image: url(style/hovercomment.png);
+ text-decoration: none;
+ color: #3ca0a4;
+}
+
+div.inlinecomments div.comments {
+ float: right;
+ margin: 25px 5px 0 0;
+ max-width: 50em;
+ min-width: 30em;
+ border: 1px solid #2eabb0;
+ background-color: #f2fbfd;
+ z-index: 150;
+}
+
+div#comments {
+ border: 1px solid #2eabb0;
+ margin-top: 20px;
+}
+
+div#comments div.nocomments {
+ padding: 10px;
+ font-weight: bold;
+}
+
+div.inlinecomments div.comments h3,
+div#comments h3 {
+ margin: 0;
+ padding: 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 3px;
+}
+
+div.inlinecomments div.comments div.actions {
+ padding: 4px;
+ margin: 0;
+ border-top: none;
+}
+
+div#comments div.comment {
+ margin: 10px;
+ border: 1px solid #2eabb0;
+}
+
+div.inlinecomments div.comment h4,
+div.commentwindow div.comment h4,
+div#comments div.comment h4 {
+ margin: 10px 0 0 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 1px 4px 1px 4px;
+}
+
+div#comments div.comment h4 {
+ margin: 0;
+}
+
+div#comments div.comment h4 a {
+ color: #d5f4f4;
+}
+
+div.inlinecomments div.comment div.text,
+div.commentwindow div.comment div.text,
+div#comments div.comment div.text {
+ margin: -5px 0 -5px 0;
+ padding: 0 10px 0 10px;
+}
+
+div.inlinecomments div.comment div.meta,
+div.commentwindow div.comment div.meta,
+div#comments div.comment div.meta {
+ text-align: right;
+ padding: 2px 10px 2px 0;
+ font-size: 95%;
+ color: #538893;
+ border-top: 1px solid #cbe7e5;
+ background-color: #e0f6f4;
+}
+
+div.commentwindow {
+ position: absolute;
+ width: 500px;
+ border: 1px solid #cbe7e5;
+ background-color: #f2fbfd;
+ display: none;
+ z-index: 130;
+}
+
+div.commentwindow h3 {
+ margin: 0;
+ background-color: #2eabb0;
+ color: white;
+ border: none;
+ padding: 5px;
+ font-size: 1.5em;
+ cursor: pointer;
+}
+
+div.commentwindow div.actions {
+ margin: 10px -10px 0 -10px;
+ padding: 4px 10px 4px 10px;
+ color: #538893;
+}
+
+div.commentwindow div.actions input {
+ border: 1px solid #2eabb0;
+ background-color: white;
+ color: #135355;
+ cursor: pointer;
+}
+
+div.commentwindow div.form {
+ padding: 0 10px 0 10px;
+}
+
+div.commentwindow div.form input,
+div.commentwindow div.form textarea {
+ border: 1px solid #3c9ea2;
+ background-color: white;
+ color: black;
+}
+
+div.commentwindow div.error {
+ margin: 10px 5px 10px 5px;
+ background-color: #fbe5dc;
+ display: none;
+}
+
+div.commentwindow div.form textarea {
+ width: 99%;
+}
+
+div.commentwindow div.preview {
+ margin: 10px 0 10px 0;
+ background-color: #70d0d4;
+ padding: 0 1px 1px 25px;
+}
+
+div.commentwindow div.preview h4 {
+ margin: 0 0 -5px -20px;
+ padding: 4px 0 0 4px;
+ color: white;
+ font-size: 1.3em;
+}
+
+div.commentwindow div.preview div.comment {
+ background-color: #f2fbfd;
+}
+
+div.commentwindow div.preview div.comment h4 {
+ margin: 10px 0 0 0!important;
+ padding: 1px 4px 1px 4px!important;
+ font-size: 1.2em;
+}
+
+/* :::: SUGGEST CHANGES :::: */
+div#suggest-changes-box input, div#suggest-changes-box textarea {
+ border: 1px solid #ccc;
+ background-color: white;
+ color: black;
+}
+
+div#suggest-changes-box textarea {
+ width: 99%;
+ height: 400px;
+}
+
+
+/* :::: PREVIEW :::: */
+div.preview {
+ background-image: url(style/preview.png);
+ padding: 0 20px 20px 20px;
+ margin-bottom: 30px;
+}
+
+
+/* :::: INDEX PAGE :::: */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* :::: INDEX STYLES :::: */
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+form.pfform {
+ margin: 10px 0 20px 0;
+}
+
+/* :::: GLOBAL STYLES :::: */
+
+.docwarning {
+ background-color: #ffe4e4;
+ padding: 10px;
+ margin: 0 -20px 0 -20px;
+ border-bottom: 1px solid #f66;
+}
+
+p.subhead {
+ font-weight: bold;
+ margin-top: 20px;
+}
+
+/*BMT added 16/10/08 */
+a:link {
+ color: blue;
+ text-decoration: none;
+}
+
+a:visited {
+ color: navy;
+ text-decoration: none;
+}
+
+a:hover {
+ color: purple;
+ text-decoration: underline;
+}
+/* BMT end added 16/10/08 */
+
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ background-color: #f2f2f2;
+ font-weight: normal;
+ color: #20435c;
+ border-bottom: 1px solid #ccc;
+ margin: 20px -20px 10px -20px;
+ padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 250%; color:black;}
+div.body h2 { font-size: 190%; color:#36237f;}
+div.body h3 { font-size: 150%; color:#4933af;}
+div.body h4 { font-size: 120%; color:#6223df;}
+div.body h5 { font-size: 100%; color:#6f23ef;}
+div.body h6 { font-size: 80%; color:#5a62ff;}
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+ visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+ visibility: visible;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ text-align: left;
+ line-height: 130%;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+ul.fakelist {
+ list-style: none;
+ margin: 10px 0 10px 20px;
+ padding: 0;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+/* "Footnotes" heading */
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+/* "Topics" */
+
+div.topic {
+ background-color: #eee;
+ border: 1px solid #ccc;
+ padding: 0 7px 0 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* Admonitions */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+div.admonition p {
+ display: inline;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+table.docutils {
+ border: 0;
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 0;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+dl {
+ margin-bottom: 15px;
+ clear: both;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+.refcount {
+ color: #060;
+}
+
+dt:target,
+.highlight {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+pre {
+ padding: 5px;
+ background-color: #efc;
+ color: #333;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+ overflow: auto;
+}
+
+td.linenos pre {
+ padding: 5px 0px;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+tt {
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+ font-size: 0.95em;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.footnote:target { background-color: #ffa }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+form.comment {
+ margin: 0;
+ padding: 10px 30px 10px 30px;
+ background-color: #eee;
+}
+
+form.comment h3 {
+ background-color: #326591;
+ color: white;
+ margin: -10px -30px 10px -30px;
+ padding: 5px;
+ font-size: 1.4em;
+}
+
+form.comment input,
+form.comment textarea {
+ border: 1px solid #ccc;
+ padding: 2px;
+ font-family: sans-serif;
+ font-size: 100%;
+}
+
+form.comment input[type="text"] {
+ width: 240px;
+}
+
+form.comment textarea {
+ width: 100%;
+ height: 200px;
+ margin-bottom: 10px;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+/* :::: PRINT :::: */
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0;
+ width : 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ div#comments div.new-comment-box,
+ #top-link {
+ display: none;
+ }
+}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/developer_guide.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/developer_guide.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,191 @@
+.. index::
+ module: Developer Guide
+
+###################################
+Developer Guide
+###################################
+
+.. contents::
+
+Introduction
+============
+
+This describes various practices, procedures and conventions used within Helium. It should be read by all contributors to Helium along with the Coding Conventions.
+
+.. index::
+ single: Documentation
+
+Documentation
+=============
+
+Standalone documents like this design document and the user guide are documented in reStructuredText__ format.
+
+__ http://docutils.sourceforge.net/rst.html
+
+HTML documentation is generated in ``/helium/build/doc`` using the ``hlm doc`` command.
+
+
+.. index::
+ single: Index References-creating
+
+Creating Index References
+-------------------------
+
+In order to get things in the index you have to manually add the following code to the .rst files: ::
+
+ .. index::
+ module: file heading (the text in the 1st heading at the top of the page) gets added to index as module
+
+put this text at the top of the file::
+
+ .. index::
+ single: heading text
+
+put this just above a heading. This gets added to the index as a normal indexed link.
+
+If you replace 'single' with 'pair' it puts 2 enteries in the index:::
+
+ .. index::
+ pair: iname1; ename2
+
+In the index it becomes iname1 with ename2 below it and indented (in the 'i' section) and also ename2 with iname1
+below it and indented (in the 'e' section)
+
+The index directive needs blank lines either side of it.
+
+
+.. index::
+ single: Directory Structure
+
+Directory structure
+===================
+
+The ``/helium`` directory structure consists of:
+
+``/build``
+ This is not under source control. It is created on demand to store generated documentation, testing and coverage output and so on.
+
+``/config``
+ Configuration files for parts of Helium. Some of these may only need to be defined in Helium, whereas others may be default configuration that may be overridden by a user.
+
+``/doc``
+ All documentation related to Helium. Files are in .rst format (HTML versions can be generated under ``/build/doc`` using the ``hlm doc`` command).
+
+``/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.
+
+``/tools``
+ A number of subdirectories for each stage of the build. Each directory may contain Ant scripts and other tools and scripts related to that stage.
+
+``/tools/common``
+ Common libraries for Java, Perl and Python and XML schemas.
+
+
+Ant script structure
+--------------------
+
+The ``helium.ant.xml`` file in the project root should be imported by each build configuration. This in turn imports the root files for each of the key build stages defined in the ``/tools`` directory. ``helium.ant.xml`` also defines a number of common Ant default properties.
+
+
+.. index::
+ single: Custom Ant library
+
+Custom Ant library
+==================
+
+All custom Ant tasks and loggers should be added under ``/tools/common/java/src``. The command::
+
+ hlm-jar.bat
+
+can be run from the ``/helium`` directory. This will update the ``nokia_ant.jar`` file in ``/tools/common/java/lib``.
+
+Each custom task must be defined inside the ``antlib.xml`` file inside ``/tools/common/java/src/nokia/ant``.
+
+
+.. 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
+==========
+
+There are some basic assertion macros defined in ``common.ant.xml``. These can be used to check for correctness at the end of a target, e.g. checking that a file exists which the target was supposed to create.
+
+The assertions can be enabled by defining the ``hlm.enable.asserts``. If ``hlm.enable.asserts`` is not enabled, macro will print warnings only.
+There are several macros:
+
+``hlm:assert``
+ A basic assertion that will check any task contained within it.
+
+``hlm:assertFileExists``
+ Takes a file attribute and asserts that the file exists.
+
+.. index::
+ single: Ivy Configuration
+
+Ivy Configuration
+------------------
+
+Ibiblio
+````````
+
+Libraries in Maven2 Ibiblio_ repository can use: ``helium/config/ivy/ivy.xml``
+
+.. _Ibiblio: http://mirrors.ibiblio.org/pub/mirrors/maven2/
+
+These parameters should be used, if library has passed legal tests: ``transitive="false"``, ``conf="subcon"``
+Otherwise use: ``transitive="false"``, ``conf="core_install"``
+
+Direct URLs
+```````````
+
+Use these for a direct url link, if the library is needed for the subcon release::
+
+ helium/config/ivy/modules/jars_subcon-1.0.ivy.xml
+ helium/config/ivy/modules/eggs_subcon-1.0.ivy.xml
+
+Otherwise add to these files for non subcon libraries::
+
+ helium/config/ivy/modules/eggs-1.0.ivy.xml
+ helium/config/ivy/modules/jars-1.0.ivy.xml
+
+A new ivy config file can be added for a non-jar or egg type file.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/feature_list.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/feature_list.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,391 @@
+===================
+Helium Feature List
+===================
+
+.. index::
+ module: Helium Feature List
+
+.. contents::
+
+.. index::
+ single: feature - Framework
+
+Framework
+=========
+
+.. index::
+ single: feature - Logging
+
+Logging
+-------
+
+* Individual log files created for most build stages.
+* A summary log file is created from individual log files.
+
+ * Shows categorized messages divided into errors, significant warnings and warnings.
+
+.. index::
+ single: feature - Signalling
+
+Signaling
+----------
+
+* Build engineer can be signaled via email and SMS at many key points during the build.
+
+ * The triggering and choice of when to signal can be configured.
+
+.. index::
+ single: feature - Validation
+
+Validation
+----------
+
+* Validate an Ant configuration against the data model.
+
+.. index::
+ single: feature - Password Handling
+
+Password handling
+-----------------
+
+* Query passwords from a .netrc file or request via a dialog.
+
+.. index::
+ single: feature - Diamonds logging
+
+Diamonds logging
+----------------
+* Can upload build id, start and end time, creator, host name, release label.
+* Can upload stage start and end time based on the configuration of stages
+* Can upload build tools name and its version information.
+* Can upload release location.
+* Can parse multiple scan log file.
+* Can upload build faults related information.
+* Can upload BOM contents.
+* Can upload "number of object files" and "number of generated files".
+* Can upload build system and number of processors.
+* Can upload distribution policy file related errors like missing, invalid encoding and error type A, B, C.
+* Can upload List of Illegal APIs names if disable.analysis.tool is not set.
+* Can upload custom build tags.
+* Logging can be skipped if desired.
+
+
+.. index::
+ single: feature - Documentation
+
+Documentation
+-------------
+
+* Quick start, manual, tutorials, How-To's and development guidelines in HTML format.
+* Helium API documents the Ant targets and properties.
+* Documentation for Python and Java APIs and custom Ant tasks.
+
+
+.. index::
+ single: feature - build stages
+
+Build stages
+============
+
+.. index::
+ single: feature - startup
+
+Startup
+-------
+
+* A number of build configurations can be run on several machines from a single work area.
+* A subcon release can be bootstrapped to download required libraries for building ROMs.
+
+.. index::
+ single: feature Synergy operations
+
+Synergy operations
+------------------
+
+* Update a Synergy work area.
+
+ * Create snapshots.
+ * Checkout projects and update with folders and tasks.
+
+* Build management functions.
+
+.. index::
+ single: feature Mercurial operations
+
+Mercurial operations
+--------------------
+
+* Set or show the current branch name
+* Checkout a repository
+* Export the header and diffs for one or more changesets
+* Display information about an item
+* Create a new repository in the given directory
+* Show revision history of entire repository or files
+* Pull changes from the specified source
+* Remove the specified files on the next commit
+* Add one or more tags for the current or given revision
+* List repository tags
+* Update working directory
+
+.. index::
+ single: feature - Preparation
+
+Preparation
+-----------
+
+* Checking the build machine environment for required tools.
+* Build drive creation through subst'ing.
+* Preparation of the build area.
+
+ * Copy operations, with content filtering.
+ * Unzip operations, with content filtering.
+ * Extraction of ICDs/ICFs in order.
+ * Checks content is available before starting preparation steps.
+
+* Support for Dragonfly workspace creation.
+* BOM and BOM delta creation.
+
+ * HTML and plain text output files.
+
+* Unarchive a release from network.
+
+.. index::
+ single: feature - compilation
+
+Compilation
+-----------
+
+* Compilation using System Definition XML format.
+
+ * The System Definition files are pre-processed to insert Ant properties
+
+* Different build systems can be selected.
+
+ * Symbian EBS.
+ * Electric Cloud (EC) with history file management.
+ * Symbian Build System (Raptor).
+
+* A clean target allows a clean configuration to be built.
+
+* cMaker support (clean, export, what).
+
+.. index::
+ single: feature - SIS files
+
+SIS files
+---------
+
+* SIS files can be built.
+
+.. index::
+ single: feature - Quality Assurance
+
+Quality assurance
+-----------------
+* Policy file validation.
+* Build duplicates detection.
+* Internal exports detection.
+* Codescanner task.
+
+.. index::
+ single: feature - Publishing
+
+Publishing
+----------
+
+* Create zips of the EE build area.
+
+ * Content can be split across zips depending on number of files and file sizes.
+ * In release metadata it holds md5checksum value and size of all the zip files.
+* Zipping using EBS / EC based on the build system.
+* Create delta zips for each localised region.
+* Publish at several points during the build to a network directory.
+* Zip content selected based on distribution.policy file content.
+* Zip content selected based on component exports.
+
+.. index::
+ single: feature - Localisation
+
+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
+
+ * DTD localisation.
+ * Regional variation.
+
+.. index::
+ single: feature - iMaker image creation
+
+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).
+
+.. index::
+ single: feature - Release Notes Creation
+
+Release notes creation
+----------------------
+
+* Modifies a RTF template with values from build.
+* Adds table of errors and warnings.
+* Generates list of baselines, projects and tasks used.
+
+.. index::
+ single: feature - Delta Releasing
+
+Delta releasing
+---------------
+
+* Creates a MD5 list of files in a build area.
+* Compares a set of these files and zips new/ changed.
+* Generates a XML file for SymDEC of files deleted.
+
+.. index::
+ single: feature - Testing
+
+Testing
+-------
+
+ ATS test package generation for API (unit and/or Module) and UI test
+
+ ============== ======== =========== === ======= ========= ===========
+ Test Framework PKG File Dir Parsing CTC Tracing sis files Test Assets
+ ============== ======== =========== === ======= ========= ===========
+ **STIF** - - - - -
+ **TEF** -
+ **RTEST** -
+ **MTF** -
+ **EUnit** - - - -
+ **ASTE** -
+ ============== ======== =========== === ======= ========= ===========
+
+ - Supported
+
+
+.. index::
+ single: feature - IDO builds
+
+IDO builds
+----------
+* Codescanner integration for IDO.
+* Build area preparation for IDO (ADO base copying).
+
+Other features
+==============
+
+.. index::
+ single: feature - Interation
+
+Integration
+-----------
+
+* Overlays can be validated to check the need for merging.
+* Automated merge task creation.
+
+.. index::
+ single: feature - Miscallaneous
+
+Miscellaneous
+-------------
+
+* Clean the build areas root directory of old builds based on a dialog selection.
+* Print a list of target dependencies.
+* The source code can be scanned for words that are classed as 'bad words' i.e. words that should not be used within the code e.g. Nokia product names, competitor names and competitor product names, these ''bad words'' are counted and displayed at the end of the build process
+
+.. index::
+ single: feature - Supported SCM tools
+
+Supported SCM tools
+-------------------
+
+* Synergy
+* Mercurial
+
+.. index::
+ single: feature - Nokia Build stages
+
+Nokia Build stages
+==================
+
+.. index::
+ single: feature - FOTA update packages creation
+
+FOTA update packages creation
+-----------------------------
+* 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
+
+Data packaging
+--------------
+
+* Generates VPL and DCP and signature files.
+* Compresses images.
+* Flashes phone to generate SPR.
+* Creates input for gMES and NSU.
+* Installer creation using InstallShield.
+
+.. index::
+ single: feature - UDA creation
+
+UDA and Mass Memory Creation
+----------------------------
+
+* 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
+
+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
+
+Releasing
+---------
+
+* Upload content to network.
+* Release to Grace.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/helium_overview.html.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/helium_overview.html.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,65 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+
+
+
+
+
+
+
+
+
+Apache Ant User Manual
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/index.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/index.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,189 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+.. Helium Documentation documentation master file, created by sphinx-quickstart on Fri May 09 09:49:44 2008.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+.. index::
+ module: Helium Documentation
+
+====================
+Helium documentation
+====================
+
+.. toctree::
+ :maxdepth: 1
+
+.. raw:: html
+
+
+
+
+
+.. index::
+ single: Getting Started
+
+Getting Started
+================
+
+This section contains instructions on how to get started with Helium including where to get it from and how to use it at the very simplest level.
+<#if !(ant?keys?seq_contains("sf"))>
+This section also has a link to an elearning that goes through Helium at a very high level.
+#if>
+
+.. toctree::
+ :maxdepth: 1
+
+ introduction
+ quick_start_guide
+ feature_list
+ user-graph
+
+<#if !(ant?keys?seq_contains("sf"))>
+* Elearning_
+
+.. _Elearning: http://lmp.nokia.com/lms/lang-en/taxonomy/TAX_Search.asp?UserMode=0&SearchStr=helium
+#if>
+
+.. raw:: html
+
+
+
+
+Tutorials and HOWTOs
+=====================
+This section lists all the available tutorials on Helium and how to configure and use it.
+
+.. toctree::
+ :maxdepth: 1
+
+ tutorials/configuration/SimplestConfiguration
+ tutorials/configuration/UseHlmTasksInConfiguration
+ tutorials/configuration/HowtoCreateANewSignal
+ tutorials/rom_image
+ tutorials/variant
+ tutorials/qt_build
+<#if !ant?keys?seq_contains("sf")>
+ nokia/blacktusk/howto-setup-blacktusk-with-helium
+
+* IDO_
+
+.. _IDO: ido
+
+* TeamCI_
+
+.. _TeamCI: teamci
+#if>
+
+.. raw:: html
+
+
+
+
+
+.. index:: single: Helium Manual
+
+Helium Manual
+==============
+
+This section contains the details of the various activities that can be performed by Helium, you should look
+here for specific information about a task or action.
+
+.. toctree::
+ :maxdepth: 1
+
+<#if !ant?keys?seq_contains("sf")>
+ nokia/nokia
+ nokia/retrieving
+#if>
+ sf
+ manual/running
+ manual/configuring
+ manual/configuringdiamonds
+ manual/signaling
+ manual/stages
+<#if !ant?keys?seq_contains("sf")>
+ nokia/nokiastages
+ nokia/rndsdk_user_manual
+ nokia/quality
+#if>
+ manual/cruisecontrol
+ manual/debugging
+ metrics
+ manual/APIs
+<#if !ant?keys?seq_contains("sf")>
+ api_changes
+
+* helium-antlib_
+
+.. _helium-antlib: helium-antlib
+#if>
+
+.. raw:: html
+
+
+
+Helium Architecture
+===================
+
+This section describes the architecture of Helium. It also contains a link to the style guide to be used for
+coding conventions.
+
+
+.. toctree::
+ :maxdepth: 1
+
+ architecture
+
+.. raw:: html
+
+
+
+
+Developer Guide
+==================
+This section contains information on how to make changes to Helium either as a tools team developer or an external
+developer. The 'developer guide' link contains information on the structure of the directories and some important
+information on how to add libraries and other miscellaneous information.
+It also contains details on how to test the changes made.
+
+.. toctree::
+ :maxdepth: 1
+
+<#if !ant?keys?seq_contains("sf")>
+ nokia/howto-contribute
+ nokia/legal
+ nokia/testing
+#if>
+ developer_guide
+ coding_conventions
+
+.. raw:: html
+
+
+
+
+Indices and Tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/introduction.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/introduction.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,82 @@
+###################
+Helium Introduction
+###################
+
+.. index::
+ module: Introduction
+
+.. contents::
+
+.. index::
+ single: Introduction
+
+Introduction
+=============
+
+This is the user guide and technical description for Helium, an ANT based build framework used to build S60 based products.
+This documentation describes how to configure and use the Helium build framework from the point of view of an IDO integrator,
+a build manager, a helium contributor and subcon user.
+
+Helium contains all you need in order to create a work area, a build area, perform the compilation, link, create localised
+variants, submit build information to Diamonds (used for statistical analysis), create Data Packages,
+zip the files to create a release and much more. The aim is for helium to be used by every build and release team working on
+S60 products within Nokia. It is also used by some Subcons as part of the tool set given to them to allow subcons to build parts
+of the S60 code.
+
+Before you start reading about Helium it is very advisable that you are familiar with ANT_ and how it works so
+click on this `ANT link`_ if you are not familiar with ANT_.
+
+.. _ANT link: http://ant.apache.org/
+.. _ANT: http://ant.apache.org/
+
+Ant makes great use of XML_ files for its configuration so if you are unfamiliar with XML_ files it is recommended that you read the
+information at the XML_ link.
+
+.. _XML: http://www.w3.org/XML/
+
+There are various parts of this documentation that are only of interest to certain users (in particular the Helium integrator),
+it is hoped that eventually there will
+be separate contents lists for the different users, but for the time being this is not possible, so bare with us.
+
+
+NOTE: for best viewing you should use Windows Internet Explorer 7.0 or newer as version 6.0 has some problems with display of the
+navigation bar and contents list.
+
+
+.. index::
+ single: Vision
+
+Vision
+=========
+
+The Helium vision is to fulfill the following demands:
+
+ * A "common unified toolset".
+ * Easy to use and configure for all different builds.
+
+ * Fully automated builds.
+ * Verbose and clear messages.
+
+ * Light.
+ * Simple things should be easy to do, complex things should be possible.
+
+.. index::
+ single: Background
+
+Background
+============
+
+Helium was developed from a need to reduce "reinventing the wheel" for build tools. It was based on the mc_tools project which had the same goal within the former MC organization.
+
+.. index::
+ single: Why Ant?
+
+Why Ant?
+==========
+
+Helium is fundamentally based on Apache ANT_. Why was ANT_ chosen when there were many other similar frameworks inside Nokia,
+such as sbt, isis_build and TrombiBuild. The main reason is that while the other toolkits were developed inside Nokia,
+ANT_ is an open source tool from Apache, based on relatively simple XML_ files that define the build steps.
+Through leveraging the power of open source Helium has integrated a large amount of functionality that would have taken
+much longer to develop in-house, as well as benefit from existing, high-quality documentation.
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/junit_testing.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/junit_testing.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,245 @@
+.. index::
+ module: Testing using JUnit
+
+####################
+Testing using JUnit
+####################
+
+
+.. contents::
+
+.. index::
+ single: JUnit - what is it
+
+What is JUnit
+=============
+JUnit is a simple open source Java testing framework used to write and run repeatable automated tests. It is an
+instance of the xUnit architecture for unit testing framework. Eclipse supports creating test cases and running
+test suites, so it is easy to use for your Java applications.
+
+.. index::
+ single: JUnit features include
+
+JUnit features include:
+-----------------------
+ * Assertions for testing expected results
+ * Test fixtures for sharing common test data
+ * Test suites for easily organizing and running tests
+ * Graphical and textual test runners
+
+.. index::
+ single: JUnit Coding Convention
+
+JUnit Coding Convention:
+------------------------
+ * Name of the test class must end with "Test".
+ * Name of the method must begin with "test".
+ * Return type of a test method must be void.
+ * Test method must not throw any exception.
+ * Test method must not have any parameter.
+
+.. index::
+ single: JUnit write and run simple test
+
+How you write and run a simple test
+===================================
+ Lets think about we need to test the following Calculator Class
+
+ public class Calculator
+ {
+
+ int sum(int num1,int num2){
+
+ return num1+num2;
+
+ }
+
+ }
+
+1. Import JUnit Class.
+----------------------
+
+(The assumption for this code using junit v 4.4 )
+
+import junit.framework.*;
+
+Since we are using some constructs created by the makers of JUnit we must import any of the classes we desire to use, most of these reside in the framework subdirectory, hence the import statement.
+
+
+2. Create a subclass of TestCase:
+----------------------------------
+
+public class CalculatorTest extends TestCase {
+
+ Calculator cal=new Calculator();
+
+}
+
+Our simple class needs to define its own test method(s) to actually be of any use so it extends TestCase which provides us with the ability to define our own test methods
+
+3. Write a test method to assert expected results on the object under test:
+---------------------------------------------------------------------------
+public void testSum() {
+
+ assertEquals(2,cal.sum(1,1));
+
+}
+
+4. Code location:
+-----------------
+Place the test class under "\helium\tools\common\java\test"
+
+
+
+5. Execute the test by the command
+----------------------------------
+
+ hlm ju-unittest
+
+
+
+.. index::
+ single: JUnit report
+
+JUnit report
+============
+
+There are few ways to check the report
+
+1. At console
+-------------
+
+The test result appears in the console as below (after execute the command : hlm ju-unittest)
+
+ [cobertura-report] Cobertura GNU GPL License (NO WARRANTY) - See COPYRIGHT file
+
+ [cobertura-report] Cobertura: Loaded information on 14 classes.
+
+ [cobertura-report]
+
+ [cobertura-report] Average line coverage : 19.00%
+
+ [cobertura-report] Average branch coverage : 15.00%
+
+ [cobertura-report]
+
+ [cobertura-report] class-name=nokia.ant.AntConfiguration line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.AntLint line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.ScanLogParser line-rate=00.00% branch-rate0.00%
+
+ [cobertura-report] class-name=nokia.ant.XMLHandler line-rate=66.23% branch-rate=45.00%
+
+
+2. At Buildbot
+--------------
+For a regular build the result appear in buildbot as follows
+
+ [cobertura-report] Cobertura GNU GPL License (NO WARRANTY) - See COPYRIGHT file
+
+ [cobertura-report] Cobertura: Loaded information on 14 classes.
+
+ [ccobertura-report]
+
+ [cobertura-report] Average line coverage : 15.56%
+
+ [cobertura-report] Average branch coverage : 06.96%
+
+ [cobertura-report]
+
+ [cobertura-report] class-name=nokia.ant.AntConfiguration line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.AntLint line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.AntLint$AntLintHandler line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.BuildData line-rate=59.49% branch-rate=20.00%
+
+ [cobertura-report] class-name=nokia.ant.BuildData$BuildFault line-rate=100.00% branch-rate=100.00%
+
+ [cobertura-report] class-name=nokia.ant.BuildData$StageData line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.Retry line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.ScanLogParser line-rate=00.00% branch-rate=00.00%
+
+ [cobertura-report] class-name=nokia.ant.XMLHandler line-rate=66.23% branch-rate=45.00%
+
+ [cobertura-report] Report time: 640ms
+
+
+
+3. Report folder
+----------------
+
+If you need to generate a html report then please uncomment the below line from build.xml and check the report from ${line.coverage.reports} properties location
+
+
+
+
+
+.. index::
+ single: JUnit execute multiple test cases
+
+Execute multiple test cases with TestSuite
+==========================================
+
+If you have two tests and you'll run them together you could run the tests one at a time yourself, but you would quickly grow tired of that. Instead, JUnit provides an object TestSuite which runs any number of test cases together. The suite method is like a main method that is specialized to run tests.
+
+Create a suite and add each test case you want to execute:
+
+ public static void suite(){
+
+ TestSuite suite = new TestSuite();
+
+ suite.addTest(new CalculatorTest ("testSum"));
+
+ ****************************************;
+
+ ****************************************;
+
+ ****************************************;
+
+ return suite;
+
+ }
+
+
+Since JUnit 2.0 there is an even simpler way to create a test suite, which holds all testXXX() methods.
+You only pass the class with the tests to a TestSuite and it extracts the test methods automatically.
+
+
+.. index::
+ single: JUnit Assert
+
+JUnit Assert
+============
+
+.. csv-table::
+ :header: "Assert Name"
+
+ "``assertEquals(expected, actual)``"
+ "``assertEquals(message, expected, actual)``"
+ "``assertEquals(expected, actual, delta)``"
+ "``assertEquals(message, expected, actual, delta)``"
+ "``assertFalse(condition)``"
+ "``assertFalse(message, condition)``"
+ "``Assert(Not)Null(object)``"
+ "``Assert(Not)Null(message, object)``"
+ "``Assert(Not)Same(expected, actual)``"
+ "``Assert(Not)Same(message, expected, actual)``"
+ "``assertTrue(condition)``"
+ "``assertTrue(message, condition)``"
+
+
+.. index::
+ single: JUnit References
+
+References
+==========
+http://www.junit.org/
+
+http://junit.sourceforge.net/doc/cookstour/cookstour.htm
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/APIs.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/APIs.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,84 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+.. index::
+ module: API
+
+###################
+API
+###################
+
+
+.. contents::
+
+Introduction
+============
+
+This section contains the API to Helium.
+
+
+.. index::
+ single: API
+
+APIs
+====
+
+* `Search API`_
+
+.. _`Search API`: ../api/index.html
+
+* `Helium API`_
+
+ The `Helium API`_ specifies all the available Ant_ targets and their
+ required properties. The API is the number one resource to use when
+ building up a Helium configuration.
+
+.. _`Helium API`: ../api/helium/index.html
+.. _Ant: http://ant.apache.org
+
+* `Helium Antlib`_
+
+.. _`Helium Antlib`: ../helium-antlib/index.html
+
+<#if !(ant?keys?seq_contains("sf"))>
+* `Python API`_
+
+.. _`Python API`: ../api/python/index.html
+
+* `Java API`_
+
+.. _`Java API`: ../api/java/index.html
+#if>
+
+* `Ant Tasks`_
+
+.. _`Ant Tasks`: ../api/ant/index.html
+
+<#if !(ant?keys?seq_contains("sf"))>
+Customer APIs
+=============
+
+* `IDO API`_
+* `DFS70501 API`_
+
+.. _`IDO API`: ../ido/api/helium/index.html
+.. _`DFS70501 API`: ../dfs70501/api/helium/index.html
+#if>
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/ats.dot
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/ats.dot Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,26 @@
+digraph G {
+
+"IBY list" -> "test.mk's"
+"test.mk's" -> "Build roms"
+"Per product" -> "Build roms"
+"Per product" -> "sysdef test layers"
+"sysdef test layers" -> "components pkg" [label="Exclude any exclude.test.layers"]
+"components pkg" -> "Generate install_steps"
+"components pkg" -> "Generate execute_steps"
+"Generate install_steps" -> "test.xml"
+"Generate execute_steps" -> "test.xml"
+"Build roms" -> "rom images"
+"rom images" -> "ATSDrop zip"
+"test.xml" -> "ATSDrop zip"
+"ATSDrop zip"-> "network drive"
+"network drive" -> "ats server"
+"ats server" -> "Per test set (per component and or pkg)"
+"Per test set (per component and or pkg)" -> "flash images"
+"Per test set (per component and or pkg)" -> "install files"
+"Per test set (per component and or pkg)" -> "execute tests"
+"ats server" -> "send results to diamonds"
+
+subgraph "cluster1" {color=yellow;style=filled;label="per sysdef component or module"; "components pkg"; "Generate install_steps"; "Generate execute_steps"; "test.xml"; "ATSDrop zip"; "rom images"}
+
+subgraph "cluster2" {color=yellow;style=filled;label="ATS server runs each test set in parallel to protos"; "flash images"; "install files"; "execute tests"}
+}
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/configuring.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/configuring.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,387 @@
+.. index::
+ module: Configuring Helium
+
+==================
+Configuring Helium
+==================
+
+.. contents::
+
+Introduction
+============
+
+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:
+
+* 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.
+* post-build - creates SIS files (system Installation files), creates ROM images, zips the build area for releasing, publishes releases, creates localised images, produces data packages, reports results to diamonds server.
+
+.. _stages: stages.html
+
+.. index::
+ single: Configuration files
+
+Configuration files
+===================
+
+Defining a Helium build configuration can be a simple or complicated task depending on the requirements. Helium supports a lot of build
+functionality but much of it is optional. All configuration files are based on XML using a number of different XML schemas or formats.
+Over time more consistency and harmonisation of the formats will be implemented. Below is a list of the key formats:
+
+.. csv-table:: Helium configuration file types
+ :header: "Format", "Where used"
+
+ "Apache Ant", "All build configurations must start with at least a ``build.xml`` file in the directory where builds will be run, that contains the minimum of Helium Ant properties to configure the build."
+ "Common configuration", "Several build stages: ROM build, zipping, SIS file creation."
+ "Environment/shell variables", "Configuring the PATH and other environment settings."
+ "Preparation", "Creation of a build area, using copy and unzip steps."
+
+.. index::
+ single: Ant configuration
+
+Ant configuration
+-----------------
+
+The Ant format is the most important because at least one Ant file is required to run any kind of build command. Read the `Using Ant`_ section of the Ant manual that describes how to write generic Ant files.
+
+.. _`Using Ant`:
+
+In the context of Helium, some specific elements and properties should be used. Here is an example of a very basic Helium Ant file::
+
+
+
+
+
+
+
+
+
+
+
+
+
+Note that here the default target is ``product-build`` so this would be used for a product build configuration. In reality it would need many more properties to be complete.
+
+Refer to the `configuration reference`_ for a full list of all Helium Ant properties.
+
+.. _`configuration reference`: ../api/helium/index.html
+
+.. index::
+ single: Common configuration format
+
+.. _common-configuration-format-label:
+
+Common configuration format
+---------------------------
+
+Several parts of the build require more complex configuration than basic ``name=value`` properties. A common format is introduced for these configurations that is closely matching the future Raptor build system format in concept.
+
+Currently only \`ROM Image configuration (using iMaker)\`_ and \`SIS files\`_ are configured using this format.
+
+Summary:
+
+ * The XML document format consists of a ```` root element.
+
+ * ```` subelements define specifications (configurations) to be built.
+
+ * ```` elements can be nested, i.e. a ```` element can contain other ```` elements, etc.
+
+ * A ``name`` attribute identifies that element. It can be used to select one or a group of configurations.
+
+ * An ``abstract`` attribute marks that specification as being not directly buildable. Child specifications not marked as abstract may be buildable.
+
+ * ```` elements inside ```` s define property values. A property defined in a child ```` element overrides the value of a property with the same name in a parent specification. All parent properties are inherited if not overridden.
+
+ * Comma-separated values or repeated elements will result in a list property value when evaluated.
+
+
+.. index::
+ single: Passwords
+
+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:
+
+Windows
+ H: drive
+
+Linux
+ ``/home/user``
+
+A ``.netrc`` file is a standard Unix file format.
+
+The following entries are available:
+
+Synergy::
+
+ machine synergy login password
+
+``synergy`` can be replaced by the name of a specific database if the settings should apply only to that database, e.g::
+
+ machine vc1s60p1 login password
+
+Then account could be used to override the default GSCM settings::
+
+ machine sa1ido login password account /db/path@dbhost
+
+Nokia specific
+--------------
+
+NOE::
+
+ machine noe login password
+
+GRACE::
+
+ machine grace login password
+
+Lotus Notes::
+
+ machine notes login password
+
+nWiki::
+
+ machine nwiki login password
+
+**Note:- that the nWiki password is different to that used for NOE/Notes/Grace and therefore will typically require the use of the macro macro-netrc.username along with the macro macro-netrc.password.**
+
+
+.. index::
+ single: Signals notifications
+
+Signals notifications
+=====================
+
+Helium contains a number of signal events that are triggered at various points during the build. These provide the following features:
+
+* Determine whether to fail the build immediately, deferred to the end or not at all.
+* Send an email alert message.
+* Send an SMS alert message.
+
+A default configuration of the signals is defined in ``config/helium_signals_default.xml``. By default the email alerts are sent to the build manager, but each signal can have a custom email list by defining a property ``.email.list``.
+
+
+.. index::
+ single: Viewing target dependencies
+
+Viewing target dependencies
+===========================
+
+The ``deps`` target can be used to display a list of the target dependencies for a given target. See the `manual page`_ for more information. Also the ``execlist`` command works in a similar way but shows a dialog showing a separated list of all the dependent targets and then just the top-level of dependencies, to help with continuing a build on the command line.
+
+.. _`manual page`: ../api/helium/target-deps.html
+
+
+.. index::
+ single: Automating build number assignment
+
+Automating build number assignment
+==================================
+
+Typically the build number for a build is defined on the command line. However it may be desirable to automate the allocation of a new build number using a simple text database file. To do this, add the property ``read.build.int`` to the configuration or the command line. This will look for a text file in this location::
+
+ ${publish.root.dir}/${build.name}/builds/${build.name}_${core.build.version}_${build.tag}_build_int_db.txt
+
+If the file is not present it is created with a new build number value of "001". If it does exist the value is read from the file and then incremented and written back for the next build. A ``build.tag`` property can also be defined to start the build number with a text string if needed.
+
+
+.. index::
+ single: Advanced configuration
+
+Advanced configuration
+======================
+
+.. index::
+ single: Custom targets
+
+Custom targets
+--------------
+
+Custom targets are often needed in a configuration to customize, extend or otherwise modify the default behaviour and build sequences of Helium.
+
+To override a target inside Helium define a custom target with the same name. The original target will then be named with
+the prefix of the project (Ant file) name, e.g. ``common.hello``. There are three ways to customize a target:
+
+.. index::
+ single: Completely replace the target
+
+Completely replace the target
+:::::::::::::::::::::::::::::
+
+Just define the custom target::
+
+
+
+
+
+.. index::
+ single: Run custom code after the target
+
+Run custom code after the target
+::::::::::::::::::::::::::::::::
+
+Define the overriding custom target and make it depend on the original target::
+
+
+
+
+
+.. index::
+ single: Run custom code before the target
+
+Run custom code before the target
+:::::::::::::::::::::::::::::::::
+
+This is a little more complicated. Two custom targets are needed, one to implement the custom behaviour, and the 2nd to override the original target and define the dependencies::
+
+
+
+
+
+
+
+.. index::
+ single: Call a target with different params
+
+Call a target with different params
+:::::::::::::::::::::::::::::::::::
+
+In rare situations you may need to override a target in helium or call it with different properties, you should create a target in your config with the same name before you import helium.ant.xml::
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: Using Helium internal tasks and macros
+
+Using Helium internal tasks and macros
+--------------------------------------
+
+Helium contains a number of internal tasks and macros that are defined under a Helium XML namespace. This is to make it easier to distinguish them from standard Ant and 3rd party tasks inside the Helium Ant files. This means that namespaces must be correctly applied to most Helium tasks or macros.
+
+Helium tasks start with the prefix ``hlm:``, for example::
+
+
+
+
+
+To include an XML element with a ``hlm:`` prefix the Helium namespace must be defined in the root element of the XML file::
+
+
+ ....
+
+
+.. 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
+ /
+ /
+ /
+
+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 ```` 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
+:::::::::::::::::::::::::::::::::::::
+
+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.
+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
+the file supplied by S60, but you may need to copy the component compile lines from the file and add them to the existing file in helium in
+order to make sure you also get the special instructions which are required to make the builds create a ROM image successfully (or any
+other action requested).
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/configuringdiamonds.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/configuringdiamonds.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,79 @@
+.. 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. ::
+
+
+
+
+
+
+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 ```` 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
+::
+
+
+
+
+If no logfile provided, looks for xml file to send using file or file,
+if both doesn't exists does nothing. tries to pass ant properties and sends it. For below example, it looks for
+ or create_bom.xml and if any one exists then it will send that data.
+
+::
+
+
+
+
+Using only ant properties for a specific target to send data
+
+::
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/cruisecontrol.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/cruisecontrol.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,43 @@
+CruiseControl Helium Integration
+================================
+
+CruiseControl version: 2.8.2
+
+HCC version: 1
+
+How to use CC Helium customizations
+-----------------------------------
+
+Checks for modifications made to a Synergy repository. It does this by examining a provided reference project, getting the tasks from all folders in that project, and checking the completion time of those tasks against the last build.
+
+In CruiseControl config.xml:
+
+.. code-block:: xml
+
+
+
+
+ ...
+
+How to use Dashboard Helium customizations
+------------------------------------------
+
+To enable the Helium build summary widget please use the Helium specific
+dashboard configuration file:
+
+set CCDIR=
+
+\cruisecontrol.bat
+
+How to configure the Ant builder
+--------------------------------
+
+To prevent log.xml missing exception while running Helium please configure the ant builder this way:
+
+.. code-block:: xml
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/debugging.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/debugging.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,90 @@
+.. index::
+ module: Debugging
+
+#########
+Debugging
+#########
+
+
+.. contents::
+
+
+.. _Troubleshooting-label:
+
+Troubleshooting
+===============
+
+This section contains details on how to find errors and problems within helium itself (for helium contributors) and within the configuration files
+and ANT tasks etc. for the build managers and subcons.
+
+.. index::
+ single: Output Logs
+
+.. index::
+ single: Logs
+
+Output Logs
+-----------
+
+When running Helium there are a large number of output logs created to assist with debugging and determining what has been performed and what has not.
+All of the log files are generated in the build area, usually under the ``output\logs`` folder. Many of the logs are created in different formats
+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 nn is the variant number(s):
+
+.. csv-table:: build logs
+ :header: "Log name", "File type", "Purpose"
+
+ "xx_ant_env.log", "Ant environment Log", "Lists all the environment varaibles"
+ "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_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"
+
+Targets and their log
+;;;;;;;;;;;;;;;;;;;;;
+
+.. image:: ../images/dependencies_log.grph.png
+
+.. index::
+ single: Troubleshooting
+
+
+Troubleshooting - Helium
+------------------------
+
+Use the ``diagnostics`` command provide debugging information when reporting problems. It lists all the environment variables and all the ANT
+properties and all the ANT targets within Helium
+so you might find it useful to pipe it to a log file so that you can read all of the output at your leisure.
+
+To run the diagnostics command type in a command window where the hlm.bat file is:
+
+hlm diagnostics > diag.log
+
+.. index::
+ single: Failing early in the build
+
+Failing early in the build
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+The ``failonerror`` property is defined in ``helium.ant.xml`` and has the default value ``false``. It is used to control whether the
+tasks fail when errors occur or the build execution just continues. The build can be configured to "fail fast" if this is set to ``true``,
+either on the command line or in a build configuration before importing ``helium.ant.xml``. Given that many ``exec`` tasks will return an
+error code due to build errors, it is not recommended to set this to true for regular builds.
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/product_example.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/product_example.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,889 @@
+.. index::
+ module: Example Product
+
+==================
+Example Product
+==================
+
+.. contents::
+
+Introduction
+============
+
+This section gives an example of a product and its configuration files which produces a complete build, link, ROM image generation and variant creation.
+
+
+.. index::
+ single: Example - File Structure
+
+.. _product-example-label:
+
+Legacy File Structure
+=====================
+
+The following is an example of the file structure required, 'mc' is the product root directory. The convention used here is '\' indicates a sub folder below the current folder. The mc project is saved under synergy or some other version control software. (There is a naming convention; any .xml file that contains ant configuration information is named file.ant.xml if it is purely a configuration file for the project it is named file.xml) ::
+
+ \mc
+ \helium #contains the helium tool set.
+ \mc_build #contains the build command files and build configuration files (mostly ant configuration files).
+ languages.xml
+ team.ant.xml
+ \mc_number_build
+ delivery.xml
+ prep.xml
+ rom_image_comfig.xml
+ \all
+ bld.bat
+ build.xml
+ \product
+ build.xml
+ bld.bat
+ \teams
+ teamName.ant.xml
+ \mc_config #contains configuration files specific to the product being build e.g. which components to include.
+ \product
+ \rom
+ \include
+ mc_product_override.iby
+ \product_edge
+ \rom
+ \include
+ mc_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
+ \common #contains overlay files common to all products
+ \files
+ \config
+ \epoc32
+ .
+ .
+ .
+ \product_overlay #contains files that are to overwite S60 files that are specific to the product and not the others in the family of products.
+ \files
+ \config
+ \epoc32
+ .
+ .
+ .
+ \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
+ \exports
+
+
+Within each folder there needs to be certain files which contain certain configuration information, this is all configurable, but, this example is put here to give you tsome idea of what ot put where.
+
+.. index::
+ single: Example - Main Configuration Files
+
+Main Configuration Files
+=========================
+
+The following example files are the main files used within the example.
+
+.. index::
+ single: Example - team.ant.xml file
+
+team.ant.xml file
+------------------
+
+This uses the TEAM variable set up in the PC control panel environment variables. The variable name must be in upper case and the value in lower case.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+.. index::
+ single: Example - languages.xml file
+
+languages.xml
+-------------
+
+This file contains a list of all the languages used by the product, the example only shows 3.
+
+.. code-block:: xml
+
+
+
+ 0uk
+ fre
+ ger
+ chinamly32670
+
+
+
+.. index::
+ single: Example - delivery.xml file
+
+Delivery.xml
+-------------
+
+This file contains the list of projects that should be checkedout or copied (snapshot) from synergy.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: Example - prep.xml file
+
+prep.xml
+-----------
+
+This file takes the checked out projects (and snapshots) and copies them to the build area, unzipping those files that need unzipping.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: Example - bld.bat
+
+bld.bat
+--------------------
+
+This file is the one called when you start helium and it simply calls the hlm.bat file in the helium directory. ::
+
+ @echo off
+
+ if not defined HELIUM_HOME set HELIUM_HOME=%~dp0..\..\..\helium
+
+ %HELIUM_HOME%\hlm.bat %*
+
+
+.. index::
+ single: Example - build.xml
+
+build.xml
+--------------------
+
+This file contains all the initial product specific configuration required by helium.
+
+.. code-block:: xml
+
+
+
+ #the PC property 'ENVIRONMENT' is replaced with 'env'
+ #where to get the config file containing the team specific information.
+
+ #the list of products to be built
+
+ #release version
+
+
+
+
+ #only build for armv5
+ #create the build version
+
+
+
+ #these are the configuration files specific to each variant
+
+
+
+
+
+
+
+
+ #include the family product config file
+
+ #locations of various system configuration files.
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: Example - teamName.ant.xml
+
+teamName.ant.xml
+--------------------
+
+This file contains all the configuration required by a particular team, it lists where the servers are and the locations of synergy variables, GRACE variables etc.:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: Example - mc_product_override.iby file
+
+mc_product_override.iby file
+------------------------------
+
+ This file contains details of files that will be used to create the ROM image. ::
+
+
+ //FMTX stuff (to prevent from showing the missing file as there is already InternalHWRMFmTxPolicy.ini file in rom)
+ data-override=empty private\101f7a02\HWRMFmTxPolicy.ini
+
+ // 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
+
+ // Variantion ends
+
+
+ // Product customisation
+ #include
+ #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
+ #endif
+
+
+ ROM_IMAGE[2] {
+ #ifdef LPID
+ #ifdef product
+ data-override=concat3(\epoc32\data\Z\Resource\bootdata\languages.product.,LPID,.txt) "resource\Bootdata\languages.txt"
+ data-override=concat3(\epoc32\data\Z\Resource\versions\lang.product.,LPID,.txt) "resource\versions\lang.txt"
+ #endif
+ #ifdef product_EDGE
+ data-override=concat3(\epoc32\data\Z\Resource\bootdata\languages.product_edge.,LPID,.txt) "resource\Bootdata\languages.txt"
+ data-override=concat3(\epoc32\data\Z\Resource\versions\lang.product_edge.,LPID,.txt) "resource\versions\lang.txt"
+ #endif
+ #ifdef product_LTA
+ data-override=concat3(\epoc32\data\Z\Resource\bootdata\languages.product_lta.,LPID,.txt) "resource\Bootdata\languages.txt"
+ data-override=concat3(\epoc32\data\Z\Resource\versions\lang.product_lta.,LPID,.txt) "resource\versions\lang.txt"
+ #endif
+ #endif // LPID
+ }
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/running.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/running.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,127 @@
+.. index::
+ module: Running Helium
+
+##############
+Running Helium
+##############
+
+
+.. contents::
+
+
+.. index::
+ single: Command line
+
+Command line
+============
+
+The Helium command line interface is basically the same as the Ant command line, the main difference being that ``hlm`` is used instead of ``ant``. Please make sure to read the `Ant documentation`_.
+
+.. _`Ant documentation`: http://ant.apache.org/
+
+.. index::
+ single: Command line help
+
+Command line help
+-----------------
+
+To get a help summary on the command line, run ``hlm`` or ``hlm help``.
+
+To get help on a specific command, run ``hlm help ``.
+
+.. index::
+ single: Basic Commands
+
+Basic commands
+--------------
+
+::
+
+ hlm hello
+
+Prints Hello to the command line. Very simple way to check the configuration is runnable.
+
+::
+
+ hlm version
+
+Prints out the Helium version information.
+
+::
+
+ hlm config
+
+Prints the Ant configuration properties.
+
+::
+
+ hlm diagnostics
+
+Prints various diagnostic information that is useful for debugging.
+
+
+.. index::
+ single: Configuration validation
+
+Configuration validation
+========================
+
+An Ant configuration can be validated against the Helium data model using the command::
+
+ hlm check
+
+This will check for a number of things:
+
+* Warn about deprecated properties that are defined.
+* Warn about required properties in groups where at least one other property from that group is used. A group is a set of related properties for a feature. If that feature is to be used some properties may then be required and some may still be optional within that group.
+* Show for information any properties that are in the configuration but not in the data model. A particular build configuration may want to define some properties that are additional to those recognised by Helium.
+
+
+.. index::
+ single: Tools version checking
+
+Tools version checking
+======================
+
+Tool version checking can be performed to ensure that all tools have correct versions present. At the same time, a path setting file will be created. Calling this file will add tools into path, so hard coding paths is no longer needed.
+
+To perform checking run the command::
+
+ hlm check-tool-versions
+
+
+.. index::
+ single: Build output
+
+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.
+
+The result of the build (compiled files, linked (flash) files etc.) are stored in the usual folders and directories under the ``\epoc32`` directory.
+
+
+.. index::
+ single: Logging
+
+Logging
+=======
+
+Diamonds
+--------
+Logging to the Diamonds metrics database can be disabled by setting the property::
+
+ skip.diamonds=true
+
+Internal data
+-------------
+
+Helium can collect internal data about builds for the purpose of improving support. This can be disabled by setting an environment variable::
+
+ set HLM_DISABLE_INTERNAL_DATA=1
+
+
+Troubleshooting
+================
+
+See :ref:`Troubleshooting-label` for information on how to find faults with Helium.
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/sbs.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/sbs.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,154 @@
+.. 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 `_
+
+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\_ 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::
+
+
+
+
+
+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
+
+
+
+
+
+
+
+First user defined make options need to be defined as above, then the default ``.make.options``
+parameter needs to be overridden in the antcall of user defined config as below:
+
+.. code-block:: xml
+
+
+
+
+
+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
+
+
+
+
+
+
+And set ``sbs.var`` to ``sbs.singlethread.var`` as below during target to call compile-main:
+
+.. code-block:: xml
+
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/signaling.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/signaling.rst Wed Oct 28 14:39:48 2009 +0000
@@ -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 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
+
+
+
+
+
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+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
+
+
+
+
+
+This will run all notifier from the customNotifier configuration then fail the build.
+
+.. code-block:: xml
+
+
+
+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
+
+
+
+
+ defaultSignalAlwaysNotifier: Signal: ${signal.name}
+ defaultSignalAlwaysNotifier: Status: ${signal.status}
+
+
+
+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
+
+
+
+ ...
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+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: **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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/stages.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/stages.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,2088 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+.. index::
+ module: Stages
+
+=============
+Helium stages
+=============
+
+.. contents::
+
+This section gives details of each of the phases of a Helium build and what they do.
+
+
+.. index::
+ single: Stage - startup
+
+Stage: Startup
+==============
+
+.. index::
+ single: Remote builds
+
+Remote builds
+-------------
+
+.. index::
+ single: Remote build Commands
+
+Remote build Commands
+:::::::::::::::::::::
+
+Remote builds are used when a number of build configurations need to be run on several machines from a single work area. For a remote machine to receive the commands, a build manager must login and start the antserver process by running ``c:\apps\antserver\run_ant_server.bat``.
+
+Two commands are supported::
+
+ hlm distribute-work-area
+
+Tars up the work area, copies it to a network location defined by the work.area.temp.dir property, and sends a command to the remote servers to untar the work area. On the remote servers the basedir is deleted before the work area is untarred. ::
+
+ hlm start-remote-builds
+
+Sends commands to start the builds based on the remote builds configuration file entries.
+
+
+.. index::
+ single: Remote build configuration
+
+Remote build configuration
+::::::::::::::::::::::::::
+
+The configuration file format defines one or more builds::
+
+
+
+
+
+
+
+Each ```` element has a number of attributes:
+
+machine
+ The name of the remote build machine. The commands will only work if an Ant server instance is running, so be careful not to run the server on the local machine!
+
+ccmhomedir
+ This should match to the ``ccm.home.dir`` property.
+
+basedir
+ This defines the directory in which the current work area (under ``ccm.home.dir``) is located.
+
+executable
+ The file to be executed when starting a build. Typically this can be left as ``hlm``.
+
+dir
+ The directory where the executable should be found and where the command will be run from.
+
+args
+ The arguments passed to the executable. These should consist of Ant arguments, as the build is run using Ant. Note that this attribute value is treated in the same way as the line attribute in the Ant ``exec`` task - spaces are interpreted as separating the arguments.
+
+The ``remote.builds.config.file`` property defines the location of the configuration file. This should be defined in a team Ant configuration file.
+
+
+.. Commented out because we will not use this for our releases
+ Subcon bootstrap
+ ----------------
+
+ The subcon edition of Helium does not include any 3rd party libraries due to licensing restrictions.
+ Before you start using a copy of helium for the first time you need to call ``hlm-bootstrap.bat``.
+
+ Run like this if you get timeout errors and set to the values of your proxy server::
+
+ hlm-bootstrap.bat -Dproxy.host=172.16.42.137 -Dproxy.port=8080
+
+ Or if you have no proxy server::
+
+ hlm-bootstrap.bat -Dproxy.disabled=y
+
+ The bootstrap process is:
+
+ * Download Ivy jars.
+ * Use Ivy to download dependencies.
+ * Extract and install dependencies.
+
+
+.. index::
+ single: Stage - Preparation
+
+Stage: Preparation
+==================
+
+At the start of preparation a new directory is created for the build and subst'ed to ``build.drive``. If a directory with this name already exists, it is renamed to have a current timestamp on the end.
+
+.. index::
+ single: How to prepare the build area?
+
+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.
+
+The XML format of the prep file is as follows:
+
+Beginning of the file and config
+:::::::::::::::::::::::::::::::::
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+Each exclude under config defines which files are NOT extracted during unzip phases.
+
+Unzip
+:::::
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+Each separate unzip phase is defined beginning with source. Each file that needs to be unzipped is specified with unzip. It is also possible to define what parts of the zips are extracted using include tags.
+
+ICD/ICF Unzip
+::::::::::::::
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+ICDs/ICFs (Intermediate Code Fix\Drop) are extracted using unzipicds tag. Using this command ensures that the files are extracted in the correct order. Multiple ICD/ICF directories can be given to be extracted by giving multiple locations.
+
+Copy
+::::
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+Each separate copy phase is defined beginning with source. The dest parameter for each copy command defines to what folder the files are copied starting fron the given basedir. It is also possible to exclude files using the exclude tag.
+
+File end
+::::::::
+
+::
+
+
+
+
+ICF/ICD:
+````````
+
+This information is extracted from the filesystem, it uses the sources defined in the preparation xml configuration file to retreive the ICF/ICD content.
+
+.. Note::
+ This means that all ICD/ICF extracted from any other source will not be considered.
+ So you MUST use the statement of the preparation configuration file.
+
+Flags:
+``````
+
+Flags are extracted from the ProductVariant.hrh (mc_config/${r'$'}{build.configuration}_config/${r'$'}{product.name}/include/ProductVariant.hrh).
+
+.. index::
+ single: Stage - Source preparation
+
+Stage: Source preparation
+=========================
+
+The build preparation consists in two parts:
+
+ * Getting delivery content (Synergy, zips...),
+ * Preparing the build area.
+
+How to get delivery content from Synergy?
+
+It is possible to automatically get content from Synergy using the Helium framework.
+To handle that you have to configure the delivery.xml file from your family build configuration folder and reference by the property prep.delivery.file.
+
+Example configurations like a minibuild can be found under the Helium source tree.
+
+Example of configuration:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Checkout: only need to define this when extra tasks are required on top of the listed project, otherwise use the snapshot type.
+ The following properties are required:
+ - release : synergy release to use.
+ - dir : the location of your target snapshot.
+ - database: the name of the synergy database you want to use.
+ The following properties are optional:
+ - thread : optional parameter, this define the number of process to run for parallel snapshots.
+ - purpose : Purpose to check out with.
+ - sync : Force a sync step after the work area update.
+ - version : the version to check out toward to.
+ - tasks : add additional tasks to the reconfigure properties.
+ - folders : add additional folders to the reconfigure properties.
+ - use.reconfigure.template: enable the usage of the reconfigure templates, this means the project will just be reconfigured, the reconfigure properties will not be modified.
+ - fix.missing.baselines: automatically detect new projects and check them out.
+ - replace.subprojects: boolean value to enable/disable project replacement during update (default: true).
+ - skip.ci: boolean value to include/exclude the project from CC modificationset checking.
+ - ci.custom.query: Extend the synergy query for CC modificationset checking eg.(release='MinibuildDomain/next').
+ - show.conflicts: boolean value to check for task conflicts.
+ - show.conflicts.objects: boolean value to check for object conflicts.
+Snapshot: define type of the spec as snapshot and name as the baseline name.
+ The following properties are required:
+ - dir : the location of your target snapshot.
+ - database: the name of the synergy database you want to use.
+ The following properties are optional:
+ - thread : optional parameter, this define the number of process to run for parallel snapshots.
+
+Update: define type of the spec as update and name as the project to update.
+ The following properties are required:
+ - database: the name of the synergy database you want to use.
+
+To get synergy source you just have to run::
+
+ hlm prep-work-area
+
+.. index::
+ single: Stage - Compilation
+
+Stage: Compilation
+==================
+
+Compilation is based on configuration using Symbian System Definition XML files.
+See http://developer.symbian.org/wiki/index.php/System_Definition
+
+Every System Definition file can contain content for two separate sections:
+
+System model
+ A definition of the system describing the components that exist, broken into layers, modules, etc.
+
+Build model
+ Build configurations that define what is to be built and how it will be built. Separate unitLists define groups of components.
+
+The steps to configure a Helium build for main compilation are as follows:
+
+1. Put together a list of the System Definition files that define the components needing to be built in the system model sections. This could be one or several files depending on what components need building. They should be defined in an Ant ```` type with an ``id`` atttribute set to ``system.definition.files``, e.g:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+ 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.
+
+2. Determine if an existing build configuration in any of the build model sections of the files are suitable for what needs to be built. A build configuration typically looks something like this:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A ``unitListRef`` includes a ``unitList`` defined somewhere else as part of this configuration. The ``buildLayer`` elements define ``abld`` steps to run on each component. If an existing configuration is not sufficient a new one must be defined in a separate file (which should be included in the ``path`` type).
+
+3. Define the ``sysdef.configurations`` Ant property to contain a comma-separated list of build configuration names that must match the ``name`` attribute of the ``configuration``. Each configuration will be built in turn in the ``compile-main`` Ant target.
+
+Note: Build will fail if compilation error exceeds the number specified in ``build.errors.limit``. Default value is ``0`` and set it to ``-1`` to ignore this.
+
+.. index::
+ triple: Builds; EBS; EC
+
+EBS and EC compilation
+----------------------
+
+If you want to get Helium to switch compiler version you need to define the HLM_RVCT_VERSION environment variable (Nokia specific feature)::
+
+ set HLM_RVCT_VERSION=22_593
+
+
+The setting could be mentioned under the configuration's Helium bootstrapper.
+
+
+By default Helium is configured to run EBS builds. The ``build.system`` property determines what build system to use. An EC build can be run from the command line using::
+
+ hlm -Dbuild.system=ec-helium
+
+
+EC build could be configured to be running in parallel (default) or in serial mode (1 node build)::
+
+ hlm -Dbuild.system=ec-helium -Dec.mode=serial
+
+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
+
+Stage: Post Build
+=================
+
+.. index::
+ single: SIS Files
+
+Sis Files
+---------
+SIS files can be built during the postbuild stage. The ``sis.config.file`` property defines the path to a :ref:`common-configuration-format-label` file, e.g.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+The propertes are:
+
+.. csv-table:: Property descriptions
+ :header: "Property", "Description", "Values"
+
+ "``makesis.tool``", "The path for the makesis tool that builds a .sis file.", ""
+ "``signsis.tool``", "The path for the signsis tool that signs a .sis file to create a .sisx file.", ""
+ "``publish.unsigned``", "This will copy .sis files into ${r'$'}{build.output.dir}/sisfiles.", "true, false"
+ "``build.sisfiles.dir``", "The directory where the .sis file should be put.", ""
+ "``key``", "The key to use for signing.", ""
+ "``cert``", "The certificate to use for signing.", ""
+ "``name``", "The name of the .pkg file to parse.", ""
+ "``sis.name``", "The name of the .sis file to create. If omitted it will default to the name of the .pkg file.", ""
+ "``path``", "The path where the .pkg file exists as input to building the .sis file.", ""
+
+Checking Stub SIS files
+-----------------------
+This step involves checking stub sis files published to ``z:/epoc32/data/z/system/install`` and it ensures that only valid stub sis files are published.The target is included in postbuild and using ParseStubSis.pl script to do the work, it will run automatically and save the output in stubresult.log.xml. It can also be run from the command line by using::
+
+ hlm check-stub-sis
+
+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.", "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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: The iMaker Task
+
+The imaker task
+---------------
+
+.. csv-table:: Ant properties to modify
+ :header: "Attribute", "Description", "Values"
+
+ "``executor``", "Name of the build system to be used.", "ebs, helium-ec and ec"
+ "``name``", "Log and intermediate file differentiator.", ""
+ "``signal``", "Enable/disable signaling mechanism.", "true, false"
+
+Example:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. 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 `:
+
+.. 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
+
+
+
+
+
+ ....
+
+
+
+
+
+
+
+
+
+
+
+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 ```` 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
+
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+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
+=================
+
+.. index::
+ single: Uploading to Diamonds
+
+Uploading build information to Diamonds web application
+-------------------------------------------------------
+
+Diamonds is a utility tool that keeps track of build and release information. See the **Metrics** manual under section `Helium Configuration`_ for more info.
+
+.. _Helium Configuration: ../metrics.html#helium-configuration
+
+
+.. index::
+ single: Zipping Build area
+
+Zipping of the build area
+-------------------------
+
+The Engineering English build area is archived in the ``zip-ee`` target. Zipping of the localised build area is done by ``zip-localisation`` target. These properties need to be set:
+
+``zip.config.file``
+ Location of the config file.
+
+``zips.ee.spec.name``
+ Spec name for ee zipping (e.g. "ee").
+
+``zips.localised.spec.name``
+ Spec name for localised build area zipping (e.g. "localised").
+
+The ``zip.config.file`` property defines the path to a :ref:`common-configuration-format-label` file that defines the content of the zips created. It can consist of multiple configs, e.g.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. csv-table:: Common property descriptions
+ :header: "Property", "Description", "Values"
+
+ "``temp.build.dir``", "Directory to store temporary files generated during the process.", ""
+ "``name``", "The name of the zip file.", ""
+
+
+.. csv-table:: File System scanner property descriptions (default)
+ :header: "Property", "Description", "Values"
+
+ "``include``", "Path to include files/directories in the zip. Follows the Ant fileset convention.", ""
+ "``exclude``", "Path to exclude files/directories in the zip. Follows the Ant fileset convention.", ""
+ "``exclude.lst``", "Location of a file containing an exclude list(one pattern per line).", ""
+ "``distribution.policy.s60``", "Defines that the included files will be filtered based on the value of the ``Distribution.Policy.S60`` files. The file found closest to the root will override those in subdirectories.", "The value found in the file, e.g. 0 or 1. This can be negated by putting a '!' in front."
+
+
+.. csv-table:: Abld what scanner property descriptions (abld.what)
+ :header: "Property", "Description", "Values"
+
+ "``exclude``", "Path to exclude files/directories in the zip. Follows the Ant fileset convention.", ""
+ "``exclude.lst``", "Location of a file containing an exclude list(one pattern per line).", ""
+ "``abld.buildpath``", "The path to an bld.inf directory. The files built from this component will be included.", ""
+ "``abld.type``", "For what platform should abld be run for.", "armv5"
+ "``abld.epocroot``", "To specify an EPOCROOT other than \\.", ""
+
+
+.. csv-table:: Default Mappers property description (default)
+ :header: "Property", "Description", "Values"
+
+ "``name``", "The name of the zip file.", ""
+ "``max.uncompressed.size``", "Maximum size in bytes of the content being included in each zip file. If the included content exceeds this, multiple zips will be created.", ""
+ "``max.files.per.archive``", "Maximum number of files that can be included in an archive. If the total exceeds this, multiple zips will be created.", ""
+ "``archive.tool``", "The command-line archiving tool. 7zip and zip are supported.", "7za, zip"
+ "``root.dir``", "The root directory of the content being zipped.", ""
+ "``archives.dir``", "The directory where the zip files are saved to.", ""
+ "``zip.root.dir``", "The root directory for the content inside the zip file.", "root.dir value"
+
+
+.. csv-table:: Policy Mappers property description (policy)
+ :header: "Property", "Description", "Values"
+
+ "``name``", "The name of the zip file.", ""
+ "``policy.internal.name``", "Suffix of the archive that contains the confidential content.", "internal"
+ "``policy.filenames``", "Comma separated list of policy filename.", "Distribution.Policy.S60"
+ "``archive.tool``", "The command-line archiving tool. 7zip and zip are supported.", "7za, zip"
+ "``archives.dir``", "The directory where the zip files are saved to.", ""
+ "``policy.csv``", "This property defines the location of the policy definition file.", ""
+ "``policy.default.value``", "This property defines the policy value when policy file is missing or invalid (e.g. wrong format).", "9999"
+
+The policy mapper enables the sorting of the content compare to its policy value. The mapper is looking for a policy file in the file to archive directory.
+If the distribution policy file is missing then the file will go to the ``policy.default.value`` archive. Else it tries to open the file which
+MUST be ASCII encoded, and have its content matching the following expression: ``^\\d+\\s*$``.
+File not matching those specifications will be reported as invalid and the assiociated content will go to the ``policy.default.value`` archive.
+
+Archive filenames are generated the following way:
+
+Policy value is 0::
+
+ ${r'$'}{archive.dir}/${r'$'}{name}.zip
+
+Policy value is different from 0::
+
+ ${r'$'}{archive.dir}/${r'$'}{name}_${r'$'}{policy.internal.name}_.zip
+
+If the policy file is missing or its content is invalid ot the olicy value is not found in the ``${r'$'}{policy.csv}``::
+
+ ${r'$'}{archive.dir}/${r'$'}{name}_${r'$'}{policy.internal.name}_${r'$'}{policy.default.value}.zip
+
+
+.. csv-table:: Policy Remover Mappers property description (policy)
+ :header: "Property", "Description", "Values"
+
+ "``name``", "The name of the zip file.", ""
+ "``policy.internal.name``", "Suffix of the archive that contains the confidential content.", "internal"
+ "``policy.filenames``", "Comma separated list of policy filename.", "Distribution.Policy.S60"
+ "``archive.tool``", "The command-line archiving tool. 7zip and zip are supported.", "7za, zip"
+ "``archives.dir``", "The directory where the zip files are saved to.", ""
+ "``policy.root.dir``", "This property allows the user to restrict the root of policy scanning.", "root.dir value"
+ "``policy.default.value``", "This property defines the policy value when policy file is missing or invalid (e.g. wrong format).", "9999"
+
+The remover mapper in addition to policy mapper behaviour will remove the content not required for the build.
+The removal process is based on the policy.csv file information, content will be kept in the following cases:
+
+ * Included in build column is ``yes``
+ * Included in build column is ``bin``
+
+
+Two additionals removers have been introduced to support action from SFL and EPL column, you use the following
+named mappers to use them:
+
+ * sfl.policy.remover based on the 4th column of the csv
+ * epl.policy.remover based on the 5th column of the csv
+
+They support the same set of configuration properties as the default policy.remover.
+
+
+.. index::
+ single: Zipping SUBCON
+
+Subcon zipping
+--------------
+
+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
+
+Stage: Releasing
+================
+
+A published build can be made into a release by running the command::
+
+ hlm release
+
+from the root of the directory on the network where the build is located. This will create a matching release directory and copy the appropriate files there. The selected files are defined in ``release.ant.xml``.
+
+.. index::
+ single: Stage - Delta Releasing
+
+Stage: Delta releasing
+======================
+
+Introduction:
+
+A delta release is a zip file with only the changed and new files between two build areas. A xml file is also generated that contains the list of files removed between the two build areas. This xml file is read by SymDEC and deletes these files.
+
+Prequisities for automated use:
+
+- Publish is run after this stage
+
+Each build should run the 'delta-zip' target which creates a delta from a previous build to the current one. (This target looks at previous builds in the publish dir for the md5 file and chooses the most recent one).
+
+Optionally: A previous builds md5 can be passed as a argument, this might be the last bi-weekly release or used when builds are not published (The last build would have run the delta-zip target)::
+
+ hlm delta-zip -Dold.md5.file=e:\wk01_build\output\build_area\delta_zip\0.0742.3.X.15.md5 -Dold.md5.file.present=y
+
+Exclude directories from the zip::
+
+
+
+Uploading of this into Grace is similar to the grace-upload target::
+
+ hlm delta-zip-grace-upload
+
+Output::
+
+ Z:\output\build_area\delta_zip
+ + delta_zip.zip
+ + specialInstructions.xml
+ + release_metadata.xml
+
+
+.. index::
+ single: Stage - Release Notes
+
+Stage: Release Notes
+====================
+
+Introduction:
+
+This generates a release note by modifying a template (that you can edit yourself) with values from the build and Synergy.
+
+Usage::
+
+ hlm release-notes -Dbuild.number=1
+
+Define in your build configuration the path to the config of relnotes::
+
+ e.g.
+
+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
+
+Contents of template:
+ * logo.png : the logo of your product
+ * template.rtf : the document that is modified to form the output
+ * relnotes_properties.ant.xml : the names of the tokens in template.rtf that will be replaced
+ Many of the values are commented out as they change rapidly and will need to be added to the output RTF file manually.
+ * relnotes.properties : the values of the tokens
+ New values can be added e.g. token1=1.0 and referenced in relnotes.xml by ${r'$'}{token1}
+ If you want a link to a file start with .\\filename or .\\folder\\filename or \\\\share1\\file
+
+Project names can be looked up from the BOM and are set into properties, see ``config_template/relnotes/relnotes_properties.ant.xml`` for example
+
+If you want to add a new value to the output that is dynamic then you should:
+
+1) Open your template.rtf in Word and add some text that is unique eg. NewValueHere
+2) Open your template.rtf in a plain text editor such as UltraEdit and search for your value. You may find it is split over two lines or contains RTF markup language mixed into the value e.g. New\\pardValueHere
+ If this is the case reformat so you get the value all on one line and remove extra markup.
+3) Check your template still works in Word
+4) Add a new property to relnotes.properties or use existing properties from Helium or your build config files
+5) Add a new replace statement to relnotes_properties.ant.xml that references the property in step 4
+
+Output::
+
+ Z:\output\relnotes
+
+.. index::
+ single: Executing a build
+
+Executing a build
+====================
+
+This section explains how to execute a general build step-by-step.
+
+
+
+.. index::
+ single: Running build operations
+
+Running build operations
+------------------------
+
+Needed configuration
+::::::::::::::::::::
+
+TODO
+
+Setting the build number
+::::::::::::::::::::::::
+
+The ``build.number`` property is typically not defined in a configuration file, as it changes for every new build. It should be defined as a command line parameter::
+
+ -Dbuild.number=123
+
+A shortcut can also be used::
+
+ -Dbn=123
+
+.. index::
+ single: Setting the team property
+
+.. _Setting-Team_properties-label:
+
+Setting the team property
+:::::::::::::::::::::::::
+
+SET TEAM= (this defines which team specific .xml file from /mc/mc_build/teams is used for build configuration).
+
+Also see :ref: `Team-Properties-label` for more information.
+
+.. index::
+ single: ANT properties
+
+ANT properties
+::::::::::::::
+
+build.configuration
+build.drive
+ec.cluster.manager
+major.version
+minor.version
+prep.root.dir
+product.name
+
+
+.. index::
+ single: Build Types
+
+Types of build
+::::::::::::::
+
+There are different types of builds that can be run depending on the required output.
+
+.. index::
+ single: Build Main
+
+build-main
+::::::::::
+
+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
+
+
+.. index::
+ single: Product-Build
+
+product-build
+:::::::::::::
+
+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. /mc/mc_build/mc_4031_build/cogsworth.
+
+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)
+build-generic -> Runs prebuild, build-main, postbuild, flashfiles, java-certification-rom, zip-main and publish-generic commands.
+build-variants -> Runs notify-errors, mobilecrash-prep, zip-flashfiles, zip-localization and publish-variants commands.
+final -> Notifies of errors and creates log files.
+
+.. index::
+ single: platform build
+
+platform-build
+::::::::::::::
+
+A platform build executes the typical stages for building a platform deliverable. This is more limited than a product build, as some of the stages are unnecessary, e.g. building variant ROM images.
+
+The commands executed are:
+prep -> Prepares the build area
+build-main -> Compiles the components defined in the build.configuration
+flashfiles -> Creates flashfiles
+zip-main -> Zips the build area
+
+.. index::
+ single: Incremental Build
+
+Incremental build
+:::::::::::::::::
+
+An incremental build will use a previous completed product build as a starting point (probably unzipping it during preparation) and will clean and rebuild a handful of components. This is useful for testing platform component releases and off-cycle integration operations. An incremental build can be run using the command::
+
+ hlm incremental-build
+
+.. Note::
+
+ Incremental builds are not currently supported.
+
+
+Cenrep creation (S60 3.2.3 - 5.x)
+:::::::::::::::::::::::::::::::::
+<#if !(ant?keys?seq_contains("sf"))>
+See: http://s60wiki.nokia.com/S60Wiki/Central_Repository_Usage
+#if>
+
+The target ``configtool`` can be used to run the Configuration Tool.
+
+Currently supported Configuration Tool arguments are:
+
+command_line | name
+
+-master_conf : master_conf
+-confml : confml
+-impl : impl
+-iby : iby
+-ignore_errors : keepgoing(true - uses -ignore_errors, otherwise not, setting
+ true generates cenrep incase of errors, and signals has to be configured to stop the build
+ in case of errors).
+
+Default values are:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+Running individual build commands
+---------------------------------
+
+Individual build stages can be run from command line with a command "hlm _COMMAND_ -Dbuild.number=123". Each of the commands defined in this guide can be run individually. The functionality of a certain command can be looked up by searching '
+
+
+
+
+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 ../tutorials/imaker/iMakerUseCaseCustomerVariantConfml.html
+
+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
+
+
+
+
+
+
+
+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:
+::
+
+
+
+Then to create a ROM according to that template just add a specification to the configuration file::
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+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
+
+
+ ...
+
+
+
+
+
+
+
+
+
+ ...
+
+
+
+
+
+ ...
+
+
+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: ATS3 - STIF, TEF, RTEST, MTF and EUnit
+
+.. _`Stage-ATS3-label`:
+
+Stage: ATS3 - STIF, TEF, RTEST, MTF and EUnit (also Qt)
+=======================================================
+
+ATS testing is the automatic testing of the phone code once it has been compiled and linked to create a ROM image.
+
+Explanation of the process for getting ATS3 (`STIF`_ and `EUnit`_) tests compiled and executed by Helium, through the use of the ``ats-test`` target.
+
+http://developer.symbian.org/wiki/index.php/Symbian_Test_Tools
+
+<#if !(ant?keys?seq_contains("sf"))>
+.. _`STIF`: http://s60wiki.nokia.com/S60Wiki/STIF
+.. _`EUnit`: http://s60wiki.nokia.com/S60Wiki/EUnit
+#if>
+
+.. image:: ats.dot.png
+
+Prerequisites
+----------------
+
+* `Harmonized Test Interface (HTI)`_ needs to be compiled and into the image.
+* The reader is expected to already have a working ATS3 setup in which test cases can be executed. ATS3 server names,
+ access rights and authentication etc. is supposed to be already taken care of.
+
+<#if !(ant?keys?seq_contains("sf"))>
+.. _`Harmonized Test Interface (HTI)`: http://s60wiki.nokia.com/S60Wiki/HTI
+<#else>
+.. _`Harmonized Test Interface (HTI)`: http://developer.symbian.org/wiki/index.php/HTI_Tool
+#if>
+
+Test source components
+-------------------------
+
+Test source usually lives in a component's ``tsrc`` directory. Test source components are created like any other Symbian SW component;
+there is a ``group`` directory with a ``bld.inf`` file for building, ``.mmp`` files for defining the targets, and so on.
+
+The test generation code expects ``.pkg`` file in the ``group`` directory of test component to be compiled, to get the paths of the files
+(can be data, configuration, initialization etc. files) to be installed and where to install on the phone.
+
+Three STEPS to setup ATS with Helium
+--------------------------------------
+
+**STEP 1: Configure System Definition Files**
+ If the tsrc directory structure meets the criteria defined in the `new API test automation guidelines`_, then test components
+ should be included in the System Definition files; **layers** in ``layers.sysdef.xml`` file and **configuration** in ``build.sysdef.xml``
+ file (`Structure of System Definition files`_).
+
+ <#if !(ant?keys?seq_contains("sf"))>
+.. _`new API test automation guidelines`: http://s60wiki.nokia.com/S60Wiki/Test_Asset_Guidelines
+.. _`Structure of System Definition files`: http://delivery.nmp.nokia.com/trac/helium/wiki/SystemDefinitionFiles
+#if>
+
+A template of layer in layers.sysdef.xml
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+* Layer name should end with **_test_layer**
+* Two standard names for ATS test layers are being used; ``unit_test_layer`` and ``api_test_layer``. Test components (the``unit`` tags)
+ should be specified under these layers and grouped by ``module`` tag(s).
+* In the above, two modules means two drop files will be created; ``module`` may have one or more ``unit``
+* By using property ``exclude.test.layers``, complete layers can be excluded and the components inside that layer will not be included in the AtsDrop. This property is a comma (,) separated list
+
+
+**STEP 2: Configure ATS properties in build.xml**
+
+**(A)** Username and Password for the ATS3 should be set in the `.netrc file`_
+
+.. code-block:: text
+
+ machine ats login ats_user_name password ats_password
+
+Add the above line in the .netrc file and replace *ats_user_name* with your real ats username and "ats_password" with ats password.
+
+**(B)** The following properties are ATS dependent with their edit status
+
+* [must] - must be set by user
+* [recommended] - should be set by user but not mandatory
+* [allowed] - should **not** be set by user however, it is possible.
+
+.. table::
+
+ ============================== =============== ===============
+ **Property Name** **Edit Status** **Description**
+ ============================== =============== ===============
+ **ats.server** [must] For example: "4fix012345" 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.
+ **ats.drop.location** [must] Server location (UNC path) to save the ATSDrop file, before sending to the ATS Server. 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).
+ **ats.product.name** [must] Name of the product to be tested. For example: "PRODUCT".
+ **eunit.test.package** [recommended] The EUnit package name to be unzipped on the environment, for executing EUnit tests. "
+ **eunitexerunner.flags** [recommended] Flags for EUnit exerunner can be set by setting the value of this variable. The default flags are set to "/E S60AppEnv /R Off".
+ **ats.email.list** [recommended] 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.
+ **ats.flashfiles.minlimit** [recommended] Limit of minimum number of flash files to execute ats-test target, otherwise ATSDrop.zip will not be generated. Default value is "2" files.
+ **ats.plan.name** [recommended] Modify the plan name if you have understanding of test.xml file or leave it as it is. Deafault value is "plan".
+ **ats.product.hwid** [recommended] Product HardWare ID (HWID) attached to ATS. By default the value of HWID is not set.
+ **ats.script.type** [recommended] There are two types of ats script files to send drop to ATS server, "runx" and "import"; only difference is that with "import" ATS doesn't have to have access rights to testdrop.zip file, as it is sent to the system over http and import doesn't need network shares. If that is not needed "import" should not be used. Default value is "runx" as "import" involves heavy processing on ATS server.
+ **ats.target.platform** [recommended] Sets target platform for compiling test components. Default value is "armv5 urel".
+ **ats.test.timeout** [recommended] To set test commands execution time limit on ATS3 server, in seconds. Default value is "60".
+ **ats.testrun.name** [recommended] Modify the test-run name if you have understanding of test.xml file or leave it as it is. Deafault value is a string consist of build id, product name, major and minor versions.
+ **ats.trace.enabled** [recommended] Should be "True" if tracing is needed during the tests running on ATS3. Deafault value is "False", the values are case-sensitive.
+ **ats.ctc.enabled** [recommended] Should be "True" if coverage measurement and dynamic analysis (CTC) tool support is to be used by ATS. Deafault value is "False", the values are case-sensitive.
+ **ats.ctc.host** [recommended] 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
+ **ats.obey.pkgfiles.rule** [recommended] 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.
+ **reference.ats.flash.images** [recommended] Fileset for list of flash images (can be .fpsx, .C00, .V01 etc) It is recommended to set the fileset, default filset is given below which can be overwritten. set *dir=""* attribute of the filset to "${r'$'}{build.output.dir}/variant_images" if "variant-image-creation" target is being used.
+ **tsrc.data.dir** [allowed] The default value is "data" and refers to the 'data' directory under 'tsrc' directory.
+ **tsrc.path.list** [allowed] Contains list of the tsrc directories. Gets the list from system definition layer files. Assuming that the test components are defined already in te layers.sysdef.xml files to get compiled. Not recommended, but the property value can be set if there are no system definition file(s), and tsrc directories paths to set manually.
+ **ats.report.location** [allowed] Sets ATS reports store location. Default location is "${r'$'}{publish.dir}/${r'$'}{publish.subdir}".
+ **ats.multiset.enabled** [allowed] Should be "True" so a set is used for each pkg file in a component, this allows tests to run in parallel on several devices.
+
+ ============================== =============== ===============
+
+
+An example of setting up properties:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+*PLEASE NOTE:* Always declare *Properties* before and *filesets* after importing helium.ant.xml.
+
+**STEP 3: Call target ats-test**
+
+To execute the target, a property should be set(````).
+
+Then call ``ats-test``, which will create the ATSDrop.zip (test package).
+
+If property *ats.email.list* is set, an email (test report) will be sent when the tests are ready on ATS.
+
+CTC:
+----
+
+CTC code coverage measurement can be created automatically by enabling property ``ats.ctc.enabled``
+
+Also, property ``ats.ctc.host`` must be defined (See the description above)
+
+Qt Tests:
+---------
+
+QtTest.lib is supported and the default harness is set to EUnit. If ``QtTest.lib`` is there in ``.mmp`` file, Helium sets the Harness to Eunit and ATS supported Qt steps are added to test.xml file
+
+In ``layers.sysdef.xml`` file, the layer name should end with "_test_layer" e.g. "qt_unit_test_layer".
+
+There are several ``.PKG`` files created after executing ``qmake``, but only one is selected based on which target platform is set. Please read the property (``ats.target.platform``) description above.
+
+.. _`Skip-Sending-AtsDrop-label`:
+
+Skip Sending AtsDrop to ATS3
+----------------------------
+
+By setting property of ``skip.ats.sending``, ``ats-test`` target only creates a drop file, and does not send the drop (or package) to ATS3 server.
+
+Customizing the test.xml in ATS3
+--------------------------------
+
+The user can customize the generated test.xml with files:
+
+* **preset_custom.xml** goes before first set
+* **postset_custom.xml** goes after last set
+* **precase_custom.xml** goes before first case
+* **postcase_custom.xml** goes after last case
+* **prestep_custom.xml** goes before first step
+* **poststep_custom.xml** goes after last step
+* **prerun_custom.xml** goes before first run or execute step
+* **postrun_custom.xml** goes after last run or execute step
+* **prepostaction.xml** goes before first postaction
+* **postpostaction.xml** goes after last postaction
+
+The files must be in the directory custom under the tsrc folder processed.
+
+The files need to be proper XML snippets that fit to their place. In case of an error an error is logged and a comment inserted to the generated XML file.
+
+A postaction section customization file ( prepostaction.xml or postpostaction.xml) could look like this
+
+.. code-block:: xml
+
+
+ Pre PostAction from custom file
+
+
+
+
+
+
+
+The ``prestep_custom.xml`` can be used to flash and unstall something custom.
+
+.. code-block:: xml
+
+
+
+ install
+
+
+
+
+ ...
+
+
+
+And then the ``prerun_custom.xml`` can be used to start measuring.
+
+.. code-block:: xml
+
+
+
+ execute
+
+
+
+
+
+
+
+
+
+**Note:** The users is expected to check the generated test.xml manually, as there is no validation. Invalid XML input files will be disregarded and a comment will be inserted to the generated XML file.
+
+Overriding Test xml values
+--------------------------
+
+Set the property ``ats.config.file`` to the location of the config file.
+
+Example configuration:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. index::
+ single: ATS3 - ASTE
+
+Stage: ATS3 - ASTE
+===================
+
+Explanation of the process for getting ATS3 `ASTE`_ tests compiled and executed by Helium, through the use of the ``ats-aste`` target.
+
+<#if !(ant?keys?seq_contains("sf"))>
+.. _`ASTE`: http://s60wiki.nokia.com/S60Wiki/ASTE
+#if>
+
+Prerequisites
+--------------
+
+* `Harmonized Test Interface (HTI)`_ needs to be compiled and into the image.
+* The reader is expected to already have a working ATS3 setup in which test cases can be executed. ATS3 server names, access rights and authentication etc. is supposed to be already taken care of.
+* `SW Test Asset`_ location and type of test should be known.
+
+<#if !(ant?keys?seq_contains("sf"))>
+.. _`Harmonized Test Interface (HTI)`: http://s60wiki.nokia.com/S60Wiki/HTI
+.. _`SW Test Asset`: http://s60wiki.nokia.com/S60Wiki/MC_SW_Test_Asset_documentation
+#if>
+
+Test source components
+--------------------------
+
+Unlike STIF, EUnit etc tests, test source components (or ``tsrc`` structure) is not needed for `ASTE`_ tests.
+
+Two STEPS to setup ASTE with Helium
+------------------------------------
+
+**STEP 1: Configure ASTE properties in build.xml**
+
+**(A)** Username and Password for the ATS3 should be set in the `.netrc file`_
+
+.. code-block:: text
+
+ machine ats login ats_user_name password ats_password
+
+Add the above line in the .netrc file and replace *ats_user_name* with your real ats username and "ats_password" with ats password.
+
+.. _`.netrc file`: configuring.html?highlight=netrc#passwords
+
+
+**(B)** The following properties are ASTE dependent with their edit status
+
+* [must] - must be set by user
+* [recommended] - should be set by user but not mandatory
+* [allowed] - should **not** be set by user however, it is possible.
+
+.. table::
+
+ =============================== =============== ===============
+ **Property Name** **Edit Status** **Description**
+ =============================== =============== ===============
+ **ats.server** [must] 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.
+ **ats.drop.location** [must] 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).
+ **ats.product.name** [must] Name of the product to be tested. For example: "PRODUCT".
+ **ats.aste.testasset.location** [must] Location of SW Test Assets, if the TestAsset is not packaged then it is first compressed to a ``.zip`` file. It should be a UNC path.
+ **ats.aste.software.release** [must] Flash images releases, for example "SPP 51.32".
+ **ats.aste.software.version** [must] Version of the software to be tested. For example: "W810"
+ **ats.aste.email.list** [recommended] 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.
+ **ats.flashfiles.minlimit** [recommended] Limit of minimum number of flash files to execute ats-test target, otherwise ATSDrop.zip will not be generated. Default value is "2" files.
+ **ats.aste.plan.name** [recommended] Modify the plan name if you have understanding of test.xml file or leave it as it is. Deafault value is "plan".
+ **ats.product.hwid** [recommended] Product HardWare ID (HWID) attached to ATS. By default the value of HWID is not set.
+ **ats.test.timeout** [recommended] To set test commands execution time limit on ATS3 server, in seconds. Default value is "60".
+ **ats.aste.testrun.name** [recommended] Modify the test-run name if you have understanding of test.xml file or leave it as it is. Default value is a string consists of build id, product name, major and minor versions.
+ **ats.aste.test.type** [recommended] Type of test to run. Default is "smoke".
+ **ats.aste.testasset.caseids** [recommended] These are the cases that which tests should be run from the TestAsset. For example, value can be set as "100,101,102,103,105,106,". A comma is needed to separate case IDs
+ **ats.aste.language** [recommended] Variant Language to be tested. Default is "English"
+ **reference.ats.flash.images** [recommended] Fileset for list of flash images (can be .fpsx, .C00, .V01 etc) It is recommended to set the fileset, default filset is given below which can be overwritten. set *dir=""* attribute of the filset to "${r'$'}{build.output.dir}/variant_images" if "variant-image-creation" target is being used.
+
+ =============================== =============== ===============
+
+An example of setting up properties:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+ ...
+
+
+
+
+
+
+
+
+
+
+
+
+*PLEASE NOTE:* Always declare *Properties* before and *filesets* after importing helium.ant.xml.
+
+**STEP 2: Call target ats-aste**
+
+To execute the target, a property should be set(````).
+
+Then call ``ats-aste``, which will create the ATSDrop.zip (test package).
+
+If property ``ats.aste.email.list`` is set, an email (test report) will be sent when the tests are ready on ATS/ASTE.
+
+
+Skip Sending AtsDrop to ATS3
+------------------------------
+
+click :ref:`Skip-Sending-AtsDrop-label`:
+
+.. index::
+ single: MATTI
+
+Stage: MATTI
+=============
+
+MATTI testing is very similar to ATS3 testing, so for details of how it all links together see :ref:`Stage-ATS3-label`: `and the matti website`_.
+
+<#if !(ant?keys?seq_contains("sf"))>
+.. _`and the matti website`: http://trmatti1.nmp.nokia.com/help/
+#if>
+
+The set up of parameters is very similar (a few less parameters and it mostly uses ATS3 values). The main difference is that once the drop file has been uploaded to the ATS3 server it uses MATTI to perform the tests and not ATS3, this is achieved by calling the MATTIDrop.py script instead of the ATSE or ATS3 scripts when creating the drop file (the drop file contains the flash files and the ruby tests to be performed).
+
+The following parameters are the ones that are not listed in the ATS3 parameters, all other parameters required are as listed in the ATS3 section above.
+
+* [must] - must be set by user
+* [recommended] - should be set by user but not mandatory
+* [allowed] - should **not** be set by user however, it is possible.
+
+.. table::
+
+ =============================== =============== ===============
+ **Property Name** **Edit Status** **Description**
+ =============================== =============== ===============
+ **matti.scripts** [must] The location of the test scrips as ruby test files i.e. .rb files.
+ **enabled.matti** [must] Enable MATTI testing to occur, if not present the target 'matti-test' will not run.
+ **template.file** [must] Location of the matti template file.
+ **ats.sis.images.dir** [recommended] Location of the the .sis installation files needed to flash to the phone (if required and present).
+ **ats.script.type** [must] Always set to import, this means the MATTI server will retrieve the tests.
+ **ats.image.type** [must] Image type whether Engineering English or localised.
+ **ats.flashfiles.minlimit** [must] Minimum number of flash files required in to add to the drop file.
+ **tsrc.data.dir** [recommended] Test source code data directory. only required for testing the ANT MATTI code.
+ **ta.flag.list** [recommended] TA flag list.
+
+ =============================== =============== ===============
+
+All you need to do is setup the following parameters:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+In order to upload and view the test run you need to have a valid user id and password that matches that in your .netrc file. To create the account open a web browser window and enter the name of the ats.server with /ats3 at the end e.g. http://123456:80/ats3. Click on the link in the top right hand corner to create the account. To view the test run once your account is active you need to click on the 'test runs' tab.
+
+To run the tests call the target `matti-test` (you will need to define the 'build.drive', 'build.number' and it is best to create the 'core.build.version' on the command line as well if you do not add it to the list of targets run that create the ROM image). e.g.
+::
+
+ hlm -Dbuild.number=001 -Dbuild.drive=z: -Dcore.build.version=001 matti-test
+
+If it displays the message 'Testdrop created!' with the file name then the MATTIDrops.py script has done what it needs to do. The next thing to check is that the drop file has been uploaded to the ATS3 server OK. If that is performed successfully then the rest of the testing needs to be performed by the ATS3 server. There is also a test.xml file created that contains details needed for debugging any problems that might occur. To determine if the tests have run correctly you need to read the test run details from the server.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/manual/tool-dependencies.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/manual/tool-dependencies.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+.. index::
+ single: Helium tools dependencies
+
+.. csv-table:: Helium tools dependencies
+ :header: "Tool", "Purpose", "Optionality"
+
+<#list doc["ivy-report/dependencies/module"] as module>
+ "${module.@name} ${module.revision.@name}", "", "${module.revision.caller.@conf}"
+#list>
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/mc_tools_design.vsd
Binary file buildframework/helium/doc/src/mc_tools_design.vsd has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/metrics.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/metrics.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,217 @@
+####################
+Helium Build Metrics
+####################
+
+.. index::
+ module: Helium Build Metrics
+
+
+.. contents::
+
+Introduction
+============
+
+This describes the types of build and release metrics that can be collected using Helium and a Diamonds installation and how they can be collected.
+
+.. index::
+ single: Diamonds
+
+Diamonds Link for builds:
+=========================
+ Diamonds Homepage:
+
+
+Helium configuration
+====================
+To enable logging to diamonds from Helium one needs to ensure that:
+
+* The properties *diamonds.host* and *diamonds.port* are set correctly.
+* By default they are taken from *helium/tools/common/companyproperties.ant.xml*,
+ but can be overridden by using:
+
+ * **Command line**
+
+ For example, if the Diamonds server IP address changed to **new.diamonds.server:newport** then you would use:
+
+ * *hlm.bat -Ddiamonds.host=new.diamonds.server -Ddiamonds.port=newport*
+
+ * **ANT team file**
+
+ For example, if the Diamonds server IP address changed to **new.diamonds.server:newport** then you would put the following lines in your .ant.xml:
+
+ * **
+ * **
+
+* If you define the property skip.diamonds to 'true' diamonds is disabled.
+
+
+.. index::
+ single: Diamonds server configuration
+
+Diamonds server configuration
+=============================
+
+ Config File: helium/config/diamonds_config.xml.ftl
+
+
+Properties need to be defined for successful logging:
+-----------------------------------------------------
+
+ ========================== ============
+ Property name Description
+ ========================== ============
+ diamonds.host Diamonds server address
+ diamonds.port Server port number
+ diamonds.path Builds path in diamonds server
+ build.family Category of product
+ time-stamp Time stamp format
+ stages Start and end target of a stages with logical stage name
+ sysdef.configurations.list System definition name list to log component faults
+ build.name Name of product
+ release.label Name of release
+ publish Set this property to publish to network
+ publish.dir Published build environment location
+ release.grace.dir Published location
+ disable.analysis.tool Set this property to disable API Usage Metrics
+ diamonds.build.tags Set this property to send custom build tag(s) to Diamonds
+ ========================== ============
+
+
+.. index::
+ single: Metrics
+
+Metrics
+=======
+
+
+Metrics name: Build duration
+----------------------------
+
+Description
+~~~~~~~~~~~~
+ Build duration in hours as a function of time.
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ The started time and finished time are uploaded to diamonds automatically from Helium.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Summary.
+
+ For categorization by product programs, Build->Click "category" hyperlink. For
+ categorization by build accelerators, Build->Other->Click "Build system" hyperlink.
+
+
+RVCT compiler warnings
+----------------------
+
+Description
+~~~~~~~~~~~
+ Number of build warnings in SW build - RVCT compiler warnings to tell about the quality of the software.
+
+Collection Method
+~~~~~~~~~~~~~~~~~
+ Number of RVCT bad warnings, warnings and errors are send to diamond aumatically from Helium after each build.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Summary->Compilation error summary.
+
+
+Metrics name: "number of object files" and "number of generated files"
+----------------------------------------------------------------------
+
+Description
+~~~~~~~~~~~~
+ Number of object files and generated files for a build
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ Necessary data are collected from build information automatically
+
+ Based on helium/config/diamonds_config.xml.ftl cofiguration, Helium automatically sends the start and end time of a stage to diamonds.
+
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Others->Object files & Generated files.
+
+
+Metrics name: Build stage duration
+----------------------------------
+
+Description
+~~~~~~~~~~~~
+ Date and time of start and finish. A=Date and time of start B= Date and time of finish.
+ Metric = B-A calculated for each build stages. In the graph only the 4 main stages are shown.\
+
+ * *1. pre-build (Synergy check outs and snapshots, build area preparation)*
+ * *2. build (main build)*
+ * *3. post build (Post build, China, Japan, EE images, EE zip, Localization, Localized roms)*
+ * *4. release to channels (db, ftp, network disk)*
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ The started time and finished time are uploaded to diamonds automatically from Helium.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Summary. Click "Stages>>"
+
+
+Metrics name: API Usage
+----------------------------------
+
+Description
+~~~~~~~~~~~~
+ Types of api are private, internal, domain and sdk. Illegal API is (internal+private), if any illegal api exists it will show the Illegal API's name with path.
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ If disable.analysis.tool is not set, data will be uploaded to diamonds automatically from Helium.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Other->API usage
+
+
+Metrics name: Build tags
+------------------------
+
+Description
+~~~~~~~~~~~~
+ Build tags are used to group builds for metric collection purposes.
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ To send custom build tags to Diamonds the property diamonds.build.tags should be set as follows:
+ * For a single build tag (e.g. "build_tag1") -> hlm -Ddiamonds.build.tags="build_tag1"
+ * For multiple build tags (e.g. "build_tag1" and "build_tagN") -> hlm -Ddiamonds.build.tags="build_tag1,build_tagN"
+
+ Note:
+ * Build tags should not exceed 50 characters.
+ * Duplicate build tags will be ignored.
+ * If an "Available Tag" is set, then in Diamonds it gets removed from that list and transferred to "Build's Tags" list.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Tags->Build's Tags.
+
+ For categorization by tags, Click Builds->"Navigation" pane->"Build Archives"->by tags
+
+
+Metrics name: Information about "base environment"
+--------------------------------------------------
+
+Description
+~~~~~~~~~~~~
+ Information about what "base environment" is unzipped.
+
+Collection method
+~~~~~~~~~~~~~~~~~~~
+ Necessary data are collected from build information automatically if currentRelease.xml exists in the environment.
+
+Location in Diamonds
+~~~~~~~~~~~~~~~~~~~~~~
+ In Diamonds, Builds->Content. See "Input" for s60.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/minibuilds.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/minibuilds.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,42 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+.. index::
+ module: Minibuild test configurations
+
+Minibuild test configurations
+=============================
+
+Minibuilds are buildbots (automated test systems) that are used to test parts of Helium. For each platform/family of products e.g. 5132 and 5152
+a buildbot is created that tests the platform using
+a subset of the complete build. All build bots are automatically executed each time something is checked in to the Helium subversion trunk.
+
+.. index::
+ single: Minibuild test configurations- getting started
+
+Getting Started
+---------------
+
+.. toctree::
+
+<#list project.getReference('internal.ref.minibuilds')?split(';') as filename>
+ ${filename?replace('\\', '/')}
+#list>
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/quick_start_guide.rst.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/quick_start_guide.rst.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,123 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+########################
+Helium Quick Start Guide
+########################
+
+.. index::
+ module: Helium Quick Start Guide
+
+.. contents::
+
+Introduction
+============
+
+This document is a quick start guide for Ant based Helium build framework. More information can be found from `Helium manual`_.
+
+.. _`Helium manual`: index.html#index-65
+
+This quick start guide is aimed at getting you helium on the build machine and showing you how to run helium in the very
+simplest of ways. Further reading and configuration is required to perform a complete build of a component or a product.
+
+<#if !ant?keys?seq_contains("sf")>
+To set up your environment please follow the `Helium Environment Setup`_ also make sure you have correct SymSEE version mentioned in this link.
+
+.. _`Helium Environment Setup`: nokia/nokia.html
+#if>
+
+<#if ant?keys?seq_contains("sf")>
+To set up your environment please follow the steps of `Helium Environment Setup`_.
+
+.. _`Helium Environment Setup`: sf.html
+#if>
+
+
+.. index::
+ single: Helium configuration
+
+Helium configuration
+--------------------
+
+- Helium is configured using a combination of Ant configuration elements (properties, filesets, etc) and other XML files for more complex
+ configuration of particular parts of the build. For initial tests run in this quick start guide you do not need to configure anything, but
+ do please read the following references for more information:
+
+ - `Using Ant `_: specifically the Projects and Properties sections.
+ - `Configure Helium `_: `common configuration format `_ and `Helium stages `_.
+ - `Helium glossary `_: lists the specific properties used in Helium.
+
+.. index::
+ single: Running builds with Helium
+
+.. _Running-helium-label:
+
+Running builds with Helium
+==========================
+
+After configuring the framework, running builds with Helium is simple. The command-line interface is the same as for Apache Ant.
+Please read `Running Ant `_ for more information.
+
+You start the build with ``hlm`` command. Navigate into 'helium' directory (should contain the file hlm.bat) and type::
+
+ hlm [target] [-D=] [-f ] [-h] [-p -v]
+
+ [target] Run Ant target
+ [-D=] Set an Ant property
+ [-f ] Use another Ant build file
+ [-h] Print Ant help text
+ [-p -v] List all Ant targets
+
+ Variable properties for helium:
+ -Dsysdef.configuration=default set build configuration, default value is 'default'
+ -Dbuild.system=ebs set build system, default value is 'ebs'
+ - possible values are 'ebs' and 'ec'
+
+ Usage examples:
+ hlm build the default build target
+ hlm -Dbuild.system=ec-helium use electric cloud build system
+
+
+Eg::
+
+ hlm -Dbuild.number=1 hi
+
+This is a very simple task found in the file ``\helium\tool\common\common.ant.xml``
+
+The code is shown below::
+
+ This is a comment line
+ indicates comment text
+ This is the target name 'hello'
+ what the task does echo the word 'hello'
+ Conditional branch
+ If the property build.number is present
+ then
+ echo additional text 'Ant libs found OK'
+ end of 'then' action
+ end of 'if' action
+ end of target/task
+
+
+ this is the called target which depends
+ upon the target 'hello' being run before
+ this target is run.
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/sf.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/sf.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,30 @@
+======================================
+Setting up Helium (Symbian Foundation)
+======================================
+
+Installation
+------------
+
+Install the following tools:
+
+* `ActivePython 2.5`_
+
+.. _`ActivePython 2.5`: http://www.activestate.com/activepython/downloads
+
+* `ActivePerl 5.6.1`_
+
+.. _`ActivePerl 5.6.1`: http://www.activestate.com/activeperl/downloads
+
+Included in Helium release:
+
+* `Apache Ant 1.7.0`_
+
+.. _`Apache Ant 1.7.0`: http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.0-bin.zip
+
+* `Java 6`_
+
+.. _`Java 6`: http://java.com/en/download/index.jsp
+
+* 7zip_
+
+.. _7zip: http://www.7-zip.org
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/toc.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/toc.html Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,42 @@
+
+
+
+
+Apache Ant User Manual
+
+
+
+
+
+
+Architecture
+Design
+Style guide
+Python API
+Java API
+Ant Task Doc
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/configuration/HowtoCreateANewSignal.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/configuration/HowtoCreateANewSignal.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,113 @@
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ My artifact
+
+
+
+
+
+
+
+
+
+
+
+
+To declare a new signal to the framework you need to define a new signalConfig reference.
+You also need to create a signalInput configuration to define your signal behaviour.
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+The signalListenerConfig defines which target to listen and raise signal for. The target name is defined through the **name** attribute.
+Then the nested **targetCondition** element is used to configure how the signal should be triggered.
+This element accepts any nested `Ant conditions `_.
+In this case the signal will get raised only id 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
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/configuration/SimplestConfiguration.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/configuration/SimplestConfiguration.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,46 @@
+
+
+Basic Helium configuration
+==========================
+
+These two files define the smallest Helium configuration possible:
+
+First the build.xml, it consists in two Ant instructions:
+
+ * The creation of a 'env' property which stores current environment variables (see http://ant.apache.org/manual/CoreTasks/property.html).
+ * Then the inclusion of Helium features importing the ${helium.dir}/helium.ant.xml, the helium.dir is automatically defined by the Helium bootstrapper.
+
+build.xml:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+Finally the Helium bootstrapper, which consists in a simple batch file (or shell script under Linux).
+Its job is to redirect calls to the hlm.bat script under the HELIUM_HOME dir. Additional checks could be added there e.g:
+
+ * check if the user has defined the HELIUM_HOME environment variable.
+ * set/modify environment
+ * define the HELIUM_HOME if Helium is in a known location
+
+hlm.bat::
+
+ @echo off
+ setlocal
+ if not defined HELIUM_HOME (
+ echo HELIUM_HOME is not defined.
+ goto :eof
+ )
+ %HELIUM_HOME%\hlm.bat %*
+ endlocal
+
+
+
+Download the example:
+`simple_config.zip `_
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/configuration/UseHlmTasksInConfiguration.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/configuration/UseHlmTasksInConfiguration.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,55 @@
+
+
+How to use Helium ant tasks in configuration
+=============================================
+
+Sometimes customer may need to use helium ant tasks from their configurations and in the
+following way customer can use helium ant tasks by importing helium_preinclude.ant.xml:
+
+Here is a example of build.xml:
+
+ * The creation of a 'env' property which stores current environment variables (see http://ant.apache.org/manual/CoreTasks/property.html).
+ * Import ${helium.dir}/helium_preinclude.ant.xml to include helium ant tasks.
+ * Then a target which is using a helium ant task.
+ * Then the inclusion of Helium features importing the ${helium.dir}/helium.ant.xml, the helium.dir is automatically defined by the Helium bootstrapper.
+
+build.xml:
+
+.. code-block:: xml
+
+
+
+ Helium pre include test.
+
+
+
+
+
+
+ Should not print anything.
+
+ Should print something.
+
+
+
+
+
+
+Finally the Helium bootstrapper, which consists in a simple batch file (or shell script under Linux).
+Its job is to redirect calls to the hlm.bat script under the HELIUM_HOME dir. Additional checks could be added there e.g:
+
+ * check if the user has defined the HELIUM_HOME environment variable.
+ * set/modify environment
+ * define the HELIUM_HOME if Helium is in a known location
+
+hlm.bat::
+
+ @echo off
+ setlocal
+ if not defined HELIUM_HOME (
+ echo HELIUM_HOME is not defined.
+ goto :eof
+ )
+ %HELIUM_HOME%\hlm.bat %*
+ endlocal
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/configuration/simple_config.zip
Binary file buildframework/helium/doc/src/tutorials/configuration/simple_config.zip has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,93 @@
+How to generate iMaker buildinfo using Helium
+=============================================
+
+Config location: http://helium.nmp.nokia.com/trac/browser/configs/test/test_buildinfo
+
+The configuration
+-----------------
+
+build.xml
+~~~~~~~~~
+
+The configuration shows how to override the default Helium template by overriding the *rombuild.buildinfo.template* Ant property::
+
+
+
+
+
+FTL template
+~~~~~~~~~~~~
+
+It is possible to extract custom data by updating the templete using the `FreeMarker `_ Template Language (http://fmpp.sourceforge.net/freemarker/).
+The following example extract all ant properties starting with *"build."*:
+[[IncludeSource(/configs/test/test_buildinfo/image_conf_buildinfo.mk.ftl,include_templates/include_text)]]
+
+Creating the configuration
+--------------------------
+
+To create the file on your build area (Z: drive in our case) you simply need to invoke *rombuild-imaker-create-buildinfo* Helium target:
+(Just make sure you have defined HELIUM_HOME first)
+
+::
+
+ > hlm.bat -Dbuild.drive=Z: rombuild-imaker-create-buildinfo
+ *** WARNING: Can't find vcvars32.bat - MS Visual Studio not present.
+ Buildfile: build.xml
+
+ create-data-model-db:
+
+ validate-at-startup:
+ [python] ERROR: Description has no content for 'read.build.int'
+ [python] WARNING: Required property not defined: sysdef.configurations.list
+ [python] WARNING: Required property not defined: tsrc.data.dir
+ [python] WARNING: Required property not defined: ats3.pathToDrop
+ [python] WARNING: Required property not defined: ats3.host
+ [python] WARNING: Required property not defined: ats.flash.images
+ [python] WARNING: Required property not defined: ats.image.type
+ [python] WARNING: Required property not defined: ats.drop.file
+ [python] WARNING: Required property not defined: ats3.username
+ [python] WARNING: Required property not defined: cache.drive
+ [python] WARNING: Required property not defined: ats.product.name
+ [python] WARNING: Required property not defined: ats3.password
+
+ rombuild-imaker-create-buildinfo:
+ [fmpp] File processed.
+
+ BUILD SUCCESSFUL
+ Total time: 3 seconds
+
+
+The output
+~~~~~~~~~~
+
+The file image_conf_buildinfo.mk should be generated under /epoc32/rom/config, and should contains something similar to::
+
+ ##########################################################################
+ #
+ # Helium - iMaker buildinfo template.
+ #
+ ##########################################################################
+
+ BUILD_LOGGING_KEY_STAGES = 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
+ 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_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_OUTPUT_DIR = Z:\output
+ BUILD_SUMMARY_FILE = Z:\output\logs\pf_5250_16_wk2008_build_summary.xml
+ BUILD_VERSION = 0.0.1
+ BUILD_SYSTEM_EBS = Not used
+ BUILD_SISFILES_DIR = Z:\output\sisfiles
+ BUILD_ERRORS_LIMIT = 0
+ BUILD_DRIVE = Z:
+ BUILD_NUMBER = 1
+ BUILD_DUPLICATES_LOG = Z:\output\logs\pf_5250_16_wk2008_build_duplicates.xml
+ BUILD_LOGGING_START_STAGE = check-env-prep
+ BUILD_ID = pf_5250_16_wk2008
+
+
+
+Download the example: `buildinfo_creation.zip `_
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.zip
Binary file buildframework/helium/doc/src/tutorials/imaker/buildinfo_creation.zip has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/qt_build.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/qt_build.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,64 @@
+.. index::
+ module: How to create a ROM Image
+
+################################
+Configure Helium for Qt building
+################################
+
+.. contents::
+
+This tutorial explains how to update your configuration to enable Qt building.
+
+Configuring Qt
+==============
+
+Helium has a ready to use target which allows you to configure Qt. You just need to make sure the qt.dir
+property is configured with the correct location of your Qt source.
+Then you can run the target as follow::
+
+ > hlm -Dbuild.drive=Q: -Dbuild.number=1 configure-qt
+ ...
+
+This target has now been depreciated in Helium 6.0, please consider building Qt using Symbian toolchain (SBS or SBSv2).
+
+Building Qt components
+======================
+
+Qt component can be configured using system definition files version 1.5.1, its definition could be
+found under HELIUM_HOME/tools/common/dtd/sysdef_1_5_1.dtd. You also need to define this schema as the
+main one for the system definition file merging operations, this can be done by adding the following
+line to your build configuration::
+
+
+
+
+Then qmake building needs to be activated by defining the ``qmake.enabled`` property.
+
+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::
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+The system definition files can now be merged and filtered(similarly to Raptor). Helium will use the filtered information
+during the build to run qMake and generate the bld.inf required to make Symbian builds.
+This will follow this algorithm::
+
+ foreach unit from the filtered system definition file:
+ cd
+ qmake
+
+The file qmake.generated.txt is created with the list of files generated.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/rom_image.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/rom_image.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,97 @@
+.. index::
+ module: How to create a ROM Image
+
+################################
+How to create a ROM Image
+################################
+
+.. contents::
+
+This tutorial explains how to create a ROM image and all the configurations required to achieve this.
+
+
+Introduction
+=============
+
+The ROM image is the end product which is flashed (downloaded) in to the phone and makes the phone behave the way it is supposed to behave (or not if there are problems present). ROM images are created within Helium using the S60 tool iMaker. iMaker is a ROM-image creation tool which provides a simple, standardized and configurable ROM-image creation framework. iMaker is based on the standardized GNU Make system and is therefore platform-independent. iMaker is a tool that creates a flash image from a set of Symbian binary and data files. iMaker mainly functions on top of the Symbian buildrom utility.
+
+The iMaker tool itself runs the Make tool and consists of thin layer of Perl.
+iMaker offers a standardized framework for defining configuration parameters for the ROM-image
+creation. The framework tools and configurability can easily be extended in the end customer interface,
+without changing the core iMaker functionality.
+
+Within Helium there are a series of targets that can be run that call iMaker and hence build the ROM image.
+This section is targeting build managers and IDOs who need to configure Helium to build ROM images using iMaker.
+
+
+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.
+
+
+.. 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
+
+iMaker tutorials
+================
+
+This section lists all available tutorials on how to configure and use iMaker.
+
+.. toctree::
+ :maxdepth: 1
+
+ imaker/buildinfo_creation
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/tutorials/variant.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/tutorials/variant.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,185 @@
+.. 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+* customer_rom_config.xml:
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+* uda_rom_config.xml
+
+.. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. 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"
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/user-graph.dot.ftl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/user-graph.dot.ftl Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,157 @@
+<#--
+============================================================================
+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:
+
+============================================================================
+-->
+
+strict digraph G {
+ compound=true;
+ subgraph cluster_0 {
+ node [style=filled];
+ <#if !(ant?keys?seq_contains("sf"))>
+ Ant -> "Quick Guide"[dir=none];
+ "Quick Guide" -> "Setting up Helium at Nokia"[dir=none];
+ "Setting up Helium at Nokia" -> "Running Helium"[dir=none];
+ "Running Helium" -> "Feature List"[dir=none];
+ "Feature List" -> Diamonds[dir=none];
+ Diamonds -> "Helium Wiki"[dir=none];
+ "Helium Wiki" -> "Helium Forum"[dir=none];
+ <#else>
+ Ant -> "Quick Guide"[dir=none];
+ "Quick Guide" -> "Setting up Helium"[dir=none];
+ "Setting up Helium" -> "Running Helium"[dir=none];
+ "Running Helium" -> "Feature List"[dir=none];
+ #if>
+ label = "Beginners";
+ }
+
+ subgraph cluster_1 {
+ node [style=filled];
+ <#if !(ant?keys?seq_contains("sf"))>
+ "Configure Helium" -> IDO[dir=none];
+ "Configure Helium" -> TeamCI[dir=none];
+ "Configure Helium" -> MCL[dir=none];
+ <#else>
+ "Configure Helium";
+ #if>
+ label = "Intermediate";
+ }
+
+ subgraph cluster_2 {
+ node [style=filled];
+ <#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";
+ }
+
+
+ subgraph cluster_4 {
+ node [style=filled];
+ <#if !(ant?keys?seq_contains("sf"))>
+ "Helium Developer Guide" -> "Coding Convention"[dir=none];
+ "Coding Convention" -> "Helium Test Plan"[dir=none];
+ "Helium Test Plan" -> Python[dir=none];
+ Python -> Java[dir=none];
+ Java -> FMPP[dir=none];
+ FMPP -> "DOS Scripting"[dir=none];
+ <#else>
+ "Helium Developer Guide" -> "Coding Convention"[dir=none];
+ "Coding Convention" -> Python[dir=none];
+ Python -> Java[dir=none];
+ Java -> FMPP[dir=none];
+ FMPP -> "DOS Scripting"[dir=none];
+ #if>
+ label = "Helium Developer";
+ }
+
+ <#if !(ant?keys?seq_contains("sf"))>
+ subgraph cluster_2_1{
+ node [style=filled, rankdir=LR];
+ EBS [fontcolor=navyblue,fontsize=12,shape=box,href="http://s60wiki.nokia.com/S60Wiki/EBS"];
+ 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>
+
+ subgraph cluster_4_1 {
+ node [style=filled, rankdir=LR];
+ ANTUnit [fontcolor=navyblue,fontsize=12,shape=box,href="http://ant.apache.org/antlibs/antunit/"];
+ NOSE [fontcolor=navyblue,fontsize=12,shape=box,href="http://ivory.idyll.org/articles/nose-intro.html"];
+ JUnit [fontcolor=navyblue,fontsize=12,shape=box,href="http://helium.nmp.nokia.com/trac/wiki/JUnit"];
+ }
+
+ Start -> Ant [lhead=cluster_0];
+ Start -> "Configure Helium" [lhead=cluster_1];
+ 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];
+ #if>
+ "DOS Scripting" -> NOSE[dir=none, lhead=cluster_4_1, ltail=cluster_4];
+
+
+ Start [fontcolor=navyblue,fontsize=12,style=filled,href="introduction.html"];
+
+ Ant [fontcolor=navyblue,fontsize=12,shape=box,href="http://ant.apache.org/manual/"];
+ "Quick Guide" [fontcolor=navyblue,fontsize=12,shape=box,href="quick_start_guide.html"];
+ "Running Helium" [fontcolor=navyblue,fontsize=12,shape=box,href="manual/running.html"];
+
+ <#if (ant?keys?seq_contains("sf"))>
+ "Setting up Helium" [fontcolor=navyblue,fontsize=12,shape=box,href="sf.html"];
+ #if>
+
+ "Feature List" [fontcolor=navyblue,fontsize=12,shape=box,href="feature_list.html"];
+ "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"];
+ "Helium Nokia Stages" [fontcolor=navyblue,fontsize=12,shape=box,href="nokia/nokiastages.html"];
+ Diamonds [fontcolor=navyblue,fontsize=12,shape=box,href="http://diamonds.nmp.nokia.com/diamonds/"];
+ "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"];
+ #if>
+
+ "Helium Developer Guide" [fontcolor=navyblue,fontsize=12,shape=box,href="developer_guide.html"];
+ "Coding Convention" [fontcolor=navyblue,fontsize=12,shape=box,href="coding_conventions.html"];
+ Python [fontcolor=navyblue,fontsize=12,shape=box,href="http://www.python.org/"];
+ Java [fontcolor=navyblue,fontsize=12,shape=box,href="http://java.sun.com/j2se/"];
+ FMPP [fontcolor=navyblue,fontsize=12,shape=box,href="http://fmpp.sourceforge.net/"];
+ "DOS Scripting" [fontcolor=navyblue,fontsize=12,shape=box,href="http://en.wikipedia.org/wiki/Batch_script"];
+ ANTUnit [fontcolor=navyblue,fontsize=12,shape=box,href="http://ant.apache.org/antlibs/antunit/"];
+ NOSE [fontcolor=navyblue,fontsize=12,shape=box,href="http://ivory.idyll.org/articles/nose-intro.html"];
+}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/doc/src/user-graph.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/doc/src/user-graph.rst Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,15 @@
+###################
+Users' Flow Diagram
+###################
+
+.. raw:: html
+
+
+
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/ant-antunit-1.1.jar
Binary file buildframework/helium/external/antlibs/ant-antunit-1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/ant-contrib-1.0b2.jar
Binary file buildframework/helium/external/antlibs/ant-contrib-1.0b2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/antform.jar
Binary file buildframework/helium/external/antlibs/antform.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/asm-2.2.1.jar
Binary file buildframework/helium/external/antlibs/asm-2.2.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/bliki-3.0.7.jar
Binary file buildframework/helium/external/antlibs/bliki-3.0.7.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/bsf-2.4.0.jar
Binary file buildframework/helium/external/antlibs/bsf-2.4.0.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/bsh-2.1b0-1.0.jar
Binary file buildframework/helium/external/antlibs/bsh-2.1b0-1.0.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/com/kirkk/analyzer/framework/Filter.properties
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/antlibs/com/kirkk/analyzer/framework/Filter.properties Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,2 @@
+filter.packages = javax.*;java.*;org.omg*;org.ietf.jgss*;org.w3c.dom*;org.xml.sax*;sun.*;sunw.*;com.sun.*
+filter.jars=
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-codec-1.3.jar
Binary file buildframework/helium/external/antlibs/commons-codec-1.3.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-collections-3.2.jar
Binary file buildframework/helium/external/antlibs/commons-collections-3.2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-configuration-1.5.jar
Binary file buildframework/helium/external/antlibs/commons-configuration-1.5.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-discovery-0.2.jar
Binary file buildframework/helium/external/antlibs/commons-discovery-0.2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-httpclient-3.1.jar
Binary file buildframework/helium/external/antlibs/commons-httpclient-3.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-io-1.4.jar
Binary file buildframework/helium/external/antlibs/commons-io-1.4.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-jxpath-1.2.jar
Binary file buildframework/helium/external/antlibs/commons-jxpath-1.2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-lang-2.4.jar
Binary file buildframework/helium/external/antlibs/commons-lang-2.4.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/commons-logging-1.1.1.jar
Binary file buildframework/helium/external/antlibs/commons-logging-1.1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/dom4j-1.6.1.jar
Binary file buildframework/helium/external/antlibs/dom4j-1.6.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/emma.jar
Binary file buildframework/helium/external/antlibs/emma.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/emma_ant.jar
Binary file buildframework/helium/external/antlibs/emma_ant.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/fmpp-0.9.13.jar
Binary file buildframework/helium/external/antlibs/fmpp-0.9.13.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/freemarker-2.3.13.jar
Binary file buildframework/helium/external/antlibs/freemarker-2.3.13.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/ivy-helium-2.0.0-beta2.jar
Binary file buildframework/helium/external/antlibs/ivy-helium-2.0.0-beta2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/jakarta-oro-2.0.8.jar
Binary file buildframework/helium/external/antlibs/jakarta-oro-2.0.8.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/jaranalyzer-1.2.jar
Binary file buildframework/helium/external/antlibs/jaranalyzer-1.2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/jaxen-1.1.1.jar
Binary file buildframework/helium/external/antlibs/jaxen-1.1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/jsch-0.1.39.jar
Binary file buildframework/helium/external/antlibs/jsch-0.1.39.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/junit-4.5.jar
Binary file buildframework/helium/external/antlibs/junit-4.5.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/jython-2.5.jar
Binary file buildframework/helium/external/antlibs/jython-2.5.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/log4j-1.2.9.jar
Binary file buildframework/helium/external/antlibs/log4j-1.2.9.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/mail-1.4.1.jar
Binary file buildframework/helium/external/antlibs/mail-1.4.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/maven-scm-api-1.1.jar
Binary file buildframework/helium/external/antlibs/maven-scm-api-1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/maven-scm-provider-hg-1.1.jar
Binary file buildframework/helium/external/antlibs/maven-scm-provider-hg-1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/plexus-utils-1.5.6.jar
Binary file buildframework/helium/external/antlibs/plexus-utils-1.5.6.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/readme.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/antlibs/readme.txt Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,2 @@
+
+antdoclet.jar: 1.1
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/serializer.jar
Binary file buildframework/helium/external/antlibs/serializer.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/sqlitejdbc-v053.jar
Binary file buildframework/helium/external/antlibs/sqlitejdbc-v053.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/velocity-dep-1.3.1.jar
Binary file buildframework/helium/external/antlibs/velocity-dep-1.3.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/wsdl4j-1.5.1.jar
Binary file buildframework/helium/external/antlibs/wsdl4j-1.5.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/xalan.jar
Binary file buildframework/helium/external/antlibs/xalan.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/xia-1.0.jar
Binary file buildframework/helium/external/antlibs/xia-1.0.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/xincluder.jar
Binary file buildframework/helium/external/antlibs/xincluder.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/xmltask-v1.15.1.jar
Binary file buildframework/helium/external/antlibs/xmltask-v1.15.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/antlibs/xmlunit-1.2.jar
Binary file buildframework/helium/external/antlibs/xmlunit-1.2.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/antlibs/bsf-2.4.0.jar
Binary file buildframework/helium/external/cc-customizations/antlibs/bsf-2.4.0.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/antlibs/bsh-2.1b0-1.0.jar
Binary file buildframework/helium/external/cc-customizations/antlibs/bsh-2.1b0-1.0.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/antlibs/commons-logging-1.1.1.jar
Binary file buildframework/helium/external/cc-customizations/antlibs/commons-logging-1.1.1.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/antlibs/junit-4.5.jar
Binary file buildframework/helium/external/cc-customizations/antlibs/junit-4.5.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/bin/HELIUM-README.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/bin/HELIUM-README.txt Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,51 @@
+Cruise control Helium Integration
+=================================
+
+Cruise Control version: 2.8.2
+HCC version: 1
+
+Helium additions
+----------------
+cruisecontrol-bin-2.8.2\HELIUM-README.txt
+cruisecontrol-bin-2.8.2\cruisecontrol.bat
+cruisecontrol-bin-2.8.2\distribution.policy.S60
+cruisecontrol-bin-2.8.2\etc\distribution.policy.S60
+cruisecontrol-bin-2.8.2\etc\jetty.xml
+cruisecontrol-bin-2.8.2\helium-dashboard-config.xml
+cruisecontrol-bin-2.8.2\lib\distribution.policy.S60
+cruisecontrol-bin-2.8.2\lib\nokia_helium_cc.jar
+
+
+
+How to use CC Helium customizations
+-----------------------------------
+
+In config.xml:
+----8<----8<----8<----8<----8<----8<----8<----
+
+
+
+
+ ...
+----8<----8<----8<----8<----8<----8<----8<----
+
+How to use Dashboard Helium customizations
+------------------------------------------
+
+To enable the Helium build summary widget please use the Helium specific
+dashboard configuration file:
+set CCDIR=
+\cruisecontrol.bat
+
+How to configure the Ant builder
+--------------------------------
+
+To prevent log.xml missing exception while running Helium please configure the ant builder this way:
+
+
+
+
+
+
+_______________
+The Helium Team
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/bin/cruisecontrol.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/bin/cruisecontrol.bat Wed Oct 28 14:39:48 2009 +0000
@@ -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
+set HELIUMCCEXT_HOME=%~dp0
+
+REM Detecting CruiseControl
+if not defined CCDIR (
+if exist "%HELIUMCCEXT_HOME%..\..\cruisecontrol\cruisecontrol.bat" (
+set CCDIR=%HELIUMCCEXT_HOME%..\..\cruisecontrol
+) else (
+echo CCDIR is not defined
+goto :end
+)
+)
+
+if not defined DASHBOARD_CONFIG set DASHBOARD_CONFIG=%HELIUMCCEXT_HOME%helium-dashboard-config.xml
+set CC_OPTS=%CC_OPTS% -Ddashboard.config=%DASHBOARD_CONFIG% -Dhelium.cc.ext.home=%HELIUMCCEXT_HOME%
+set CC_ARGS=-lib %HELIUMCCEXT_HOME%lib -webapppath %CCDIR%/webapps/cruisecontrol -dashboard %CCDIR%/webapps/dashboard -jettyxml %HELIUMCCEXT_HOME%etc/jetty.xml %CC_ARGS%
+call %CCDIR%\cruisecontrol.bat %CC_ARGS% %*
+:end
+endlocal
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/bin/etc/jetty.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/bin/etc/jetty.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 200
+ 20
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30000
+ 2
+ false
+ 8443
+ 5000
+ 5000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /contexts
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /webapps
+ false
+ true
+ false
+ /etc/webdefault.xml
+ /lib/nokia_helium_cc.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Test Realm
+ /etc/realm.properties
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /yyyy_mm_dd.request.log
+ yyyy_MM_dd
+ 90
+ true
+ true
+ false
+ GMT
+
+
+
+
+
+
+
+ true
+ true
+ true
+ 1000
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/bin/helium-dashboard-config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/bin/helium-dashboard-config.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/bin/lib/nokia_helium_cc.jar
Binary file buildframework/helium/external/cc-customizations/bin/lib/nokia_helium_cc.jar has changed
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/build.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/build.bat Wed Oct 28 14:39:48 2009 +0000
@@ -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%)
+set PATH=%JAVA_HOME%\bin;%PATH%
+ant -lib antlibs %*
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/build.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/build.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${cc.zip}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/overlay/cruisecontrol.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/overlay/cruisecontrol.bat Wed Oct 28 14:39:48 2009 +0000
@@ -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
+set HELIUMCCEXT_HOME=%~dp0
+
+REM Detecting CruiseControl
+if not defined CCDIR (
+if exist "%HELIUMCCEXT_HOME%..\..\cruisecontrol\cruisecontrol.bat" (
+set CCDIR=%HELIUMCCEXT_HOME%..\..\cruisecontrol
+) else (
+echo CCDIR is not defined
+goto :end
+)
+)
+
+if not defined DASHBOARD_CONFIG set DASHBOARD_CONFIG=%HELIUMCCEXT_HOME%helium-dashboard-config.xml
+set CC_OPTS=%CC_OPTS% -Ddashboard.config=%DASHBOARD_CONFIG% -Dhelium.cc.ext.home=%HELIUMCCEXT_HOME%
+set CC_ARGS=-lib %HELIUMCCEXT_HOME%lib -webapppath %CCDIR%/webapps/cruisecontrol -dashboard %CCDIR%/webapps/dashboard -jettyxml %HELIUMCCEXT_HOME%etc/jetty.xml %CC_ARGS%
+call %CCDIR%\cruisecontrol.bat %CC_ARGS% %*
+:end
+endlocal
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/overlay/etc/jetty.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/overlay/etc/jetty.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+ 10
+ 200
+ 20
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30000
+ 2
+ false
+ 8443
+ 5000
+ 5000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /contexts
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /webapps
+ false
+ true
+ false
+ /etc/webdefault.xml
+ /lib/nokia_helium_cc.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Test Realm
+ /etc/realm.properties
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /yyyy_mm_dd.request.log
+ yyyy_MM_dd
+ 90
+ true
+ true
+ false
+ GMT
+
+
+
+
+
+
+
+ true
+ true
+ true
+ 1000
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/overlay/helium-dashboard-config.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/overlay/helium-dashboard-config.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/readme.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/readme.txt Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,11 @@
+Cruise Control Helium integration
+---------------------------------
+
+Requirements:
+JDK 1.5/1.6
+
+How to build the delivery?
+> build.bat
+
+_______________
+The Helium Team
\ No newline at end of file
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/ant/HeliumCCLogger.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/ant/HeliumCCLogger.java Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,595 @@
+/* ============================================================================
+Name : HeliumBuilder.java
+Part of : Helium
+
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+All rights reserved.
+This component and the accompanying materials are made available
+under the terms of the License "Eclipse Public License v1.0"
+which accompanies this distribution, and is available
+at the URL "http://www.eclipse.org/legal/epl-v10.html".
+
+Initial Contributors:
+Nokia Corporation - initial contribution.
+
+Contributors:
+
+Description:
+
+============================================================================ */
+
+package com.nokia.cruisecontrol.ant;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintStream;
+import java.io.Writer;
+import java.util.Hashtable;
+import java.util.Stack;
+import java.util.Enumeration;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.tools.ant.util.DOMElementWriter;
+import org.apache.tools.ant.util.StringUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Text;
+import org.apache.tools.ant.*;
+
+/**
+ * Generates a file in the current directory with an XML description of what
+ * happened during a build. The default filename is "log.xml", but this can be
+ * overridden with the property XmlLogger.file.
+ *
+ * This implementation assumes in its sanity checking that only one thread runs
+ * a particular target/task at a time. This is enforced by the way that parallel
+ * builds and antcalls are done - and indeed all but the simplest of tasks could
+ * run into problems if executed in parallel.
+ *
+ * @see Project#addBuildListener(BuildListener)
+ */
+public class HeliumCCLogger implements org.apache.tools.ant.BuildLogger
+{
+ /** Message priority of "error". */
+ public static final int MSG_ERR = 0;
+
+ /** Message priority of "warning". */
+ public static final int MSG_WARN = 1;
+
+ /** Message priority of "information". */
+ public static final int MSG_INFO = 2;
+
+ /** Message priority of "verbose". */
+ public static final int MSG_VERBOSE = 3;
+
+ /** Message priority of "debug". */
+ public static final int MSG_DEBUG = 4;
+
+ /** DocumentBuilder to use when creating the document to start with. */
+ private static DocumentBuilder builder = getDocumentBuilder();
+
+ /** XML element name for a build. */
+ private static final String BUILD_TAG = "build";
+
+ /** XML element name for a target. */
+ private static final String TARGET_TAG = "target";
+
+ /** XML element name for a task. */
+ private static final String TASK_TAG = "task";
+
+ /** XML element name for a message. */
+ private static final String MESSAGE_TAG = "message";
+
+ /** XML attribute name for a name. */
+ private static final String NAME_ATTR = "name";
+
+ /** XML attribute name for a time. */
+ private static final String TIME_ATTR = "time";
+
+ /** XML attribute name for a message priority. */
+ private static final String PRIORITY_ATTR = "priority";
+
+ /** XML attribute name for a file location. */
+ private static final String LOCATION_ATTR = "location";
+
+ /** XML attribute name for an error description. */
+ private static final String ERROR_ATTR = "error";
+
+ /** XML element name for a stack trace. */
+ private static final String STACKTRACE_TAG = "stacktrace";
+
+ /** The complete log document for this build. */
+ private Document doc = builder.newDocument();
+
+ /** Mapping for when tasks started (Task to TimedElement). */
+ private Hashtable tasks = new Hashtable();
+
+ /** Mapping for when targets started (Task to TimedElement). */
+ private Hashtable targets = new Hashtable();
+
+ /**
+ * Mapping of threads to stacks of elements (Thread to Stack of
+ * TimedElement).
+ */
+ private Hashtable threadStacks = new Hashtable();
+
+ /**
+ * When the build started.
+ */
+ private TimedElement buildElement;
+
+ private int msgOutputLevel = MSG_DEBUG;
+
+ private PrintStream outStream;
+
+
+ /**
+ * Returns a default DocumentBuilder instance or throws an
+ * ExceptionInInitializerError if it can't be created.
+ *
+ * @return a default DocumentBuilder instance.
+ */
+ private static DocumentBuilder getDocumentBuilder()
+ {
+ try
+ {
+ return DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ }
+ catch (Exception exc)
+ {
+ throw new ExceptionInInitializerError(exc);
+ }
+ }
+
+
+ /** Utility class representing the time an element started. */
+ private static class TimedElement
+ {
+ /**
+ * Start time in milliseconds (as returned by
+ * System.currentTimeMillis()).
+ */
+ private long startTime;
+
+ /** Element created at the start time. */
+ private Element element;
+
+ public String toString()
+ {
+ return element.getTagName() + ":" + element.getAttribute("name");
+ }
+ }
+
+
+ /**
+ * Fired when the build starts, this builds the top-level element for the
+ * document and remembers the time of the start of the build.
+ *
+ * @param event
+ * Ignored.
+ */
+ public void buildStarted(BuildEvent event)
+ {
+ }
+
+ /**
+ * Fired when the build finishes, this adds the time taken and any error
+ * stacktrace to the build element and writes the document to disk.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void buildFinished(BuildEvent event)
+ {
+ long totalTime = System.currentTimeMillis() - buildElement.startTime;
+ // buildElement.element.setAttribute(TIME_ATTR,
+ // DefaultLogger.formatTime(totalTime));
+
+ System.out.println("Build finished in cruise control HeliumCCLogger");
+
+ if (event.getException() != null)
+ {
+ System.out.println("Build finished exception occured in cruise control HeliumCCLogger");
+ System.out.println("Build finished exception is:-----"
+ + event.getException().toString());
+ buildElement.element.setAttribute(ERROR_ATTR, event.getException().toString());
+ // print the stacktrace in the build file it is always useful...
+ // better have too much info than not enough.
+ Throwable t = event.getException();
+ Text errText = doc.createCDATASection(StringUtils.getStackTrace(t));
+ Element stacktrace = doc.createElement(STACKTRACE_TAG);
+ stacktrace.appendChild(errText);
+ buildElement.element.appendChild(stacktrace);
+ }
+ String outFilename = event.getProject().getProperty("HeliumCCLogger.file");
+ System.out.println("Build finished writing to log file1" + outFilename);
+ if (outFilename == null)
+ {
+ outFilename = "log.xml";
+ }
+ System.out.println("Build finished writing to log file2");
+ String xslUri = event.getProject().getProperty("ant.HeliumCCLogger.stylesheet.uri");
+ if (xslUri == null)
+ {
+ xslUri = "log.xsl";
+ }
+ System.out.println("Build finished writing to log file3");
+ Writer out = null;
+ try
+ {
+ // specify output in UTF8 otherwise accented characters will blow
+ // up everything
+ System.out.println("Build finished writing to log file3");
+
+ OutputStream stream = outStream;
+ if (stream == null)
+ {
+ stream = new FileOutputStream(outFilename);
+ }
+ out = new OutputStreamWriter(stream, "UTF8");
+ System.out.println("Build finished writing to log file4");
+
+ out.write("\n");
+ if (xslUri.length() > 0)
+ {
+ out.write("\n\n");
+ }
+ System.out.println("Build finished writing to log file5");
+ (new DOMElementWriter()).write(buildElement.element, out, 0, "\t");
+ out.flush();
+ }
+ catch (IOException exc)
+ {
+ System.out.println("Build finished writing to log file6");
+ throw new BuildException("Unable to write log file", exc);
+ }
+ finally
+ {
+ System.out.println("Build finished writing to log file7");
+
+ if (out != null)
+ {
+ try
+ {
+ out.close();
+ }
+ catch (IOException e)
+ {
+ // ignore
+ e = null;
+ }
+ }
+ }
+ buildElement = null;
+ }
+
+ /**
+ * Returns the stack of timed elements for the current thread.
+ *
+ * @return the stack of timed elements for the current thread
+ */
+ private Stack getStack()
+ {
+ Stack threadStack = (Stack) threadStacks.get(Thread.currentThread());
+ if (threadStack == null)
+ {
+ threadStack = new Stack();
+ threadStacks.put(Thread.currentThread(), threadStack);
+ }
+ /*
+ * For debugging purposes uncomment: org.w3c.dom.Comment s =
+ * doc.createComment("stack=" + threadStack);
+ * buildElement.element.appendChild(s);
+ */
+ return threadStack;
+ }
+
+ /**
+ * Fired when a target starts building, this pushes a timed element for the
+ * target onto the stack of elements for the current thread, remembering the
+ * current time and the name of the target.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void targetStarted(BuildEvent event)
+ {
+ System.out.println("target started in cruise control HeliumCCLogger");
+ Target target = event.getTarget();
+ TimedElement targetElement = new TimedElement();
+ targetElement.startTime = System.currentTimeMillis();
+ targetElement.element = doc.createElement(TARGET_TAG);
+ targetElement.element.setAttribute(NAME_ATTR, target.getName());
+ targets.put(target, targetElement);
+ getStack().push(targetElement);
+ }
+
+ /**
+ * Fired when a target finishes building, this adds the time taken and any
+ * error stacktrace to the appropriate target element in the log.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void targetFinished(BuildEvent event)
+ {
+ System.out.println("target finished in cruise control HeliumCCLogger");
+ Target target = event.getTarget();
+ TimedElement targetElement = (TimedElement) targets.get(target);
+ if (targetElement != null)
+ {
+ long totalTime = System.currentTimeMillis() - targetElement.startTime;
+ // targetElement.element.setAttribute(TIME_ATTR,
+ // DefaultLogger.formatTime(totalTime));
+
+ TimedElement parentElement = null;
+ Stack threadStack = getStack();
+ if (!threadStack.empty())
+ {
+ TimedElement poppedStack = (TimedElement) threadStack.pop();
+ if (poppedStack != targetElement)
+ {
+ throw new RuntimeException("Mismatch - popped element = " + poppedStack
+ + " finished target element = " + targetElement);
+ }
+ if (!threadStack.empty())
+ {
+ parentElement = (TimedElement) threadStack.peek();
+ }
+ }
+ if (parentElement == null)
+ {
+ buildElement.element.appendChild(targetElement.element);
+ }
+ else
+ {
+ parentElement.element.appendChild(targetElement.element);
+ }
+ }
+ targets.remove(target);
+ }
+
+ /**
+ * Fired when a task starts building, this pushes a timed element for the
+ * task onto the stack of elements for the current thread, remembering the
+ * current time and the name of the task.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void taskStarted(BuildEvent event)
+ {
+ TimedElement taskElement = new TimedElement();
+ taskElement.startTime = System.currentTimeMillis();
+ taskElement.element = doc.createElement(TASK_TAG);
+
+ Task task = event.getTask();
+ String name = event.getTask().getTaskName();
+ if (name == null)
+ {
+ name = "";
+ }
+ taskElement.element.setAttribute(NAME_ATTR, name);
+ taskElement.element.setAttribute(LOCATION_ATTR, event.getTask().getLocation().toString());
+ tasks.put(task, taskElement);
+ getStack().push(taskElement);
+ }
+
+ /**
+ * Fired when a task finishes building, this adds the time taken and any
+ * error stacktrace to the appropriate task element in the log.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void taskFinished(BuildEvent event)
+ {
+ Task task = event.getTask();
+ TimedElement taskElement = (TimedElement) tasks.get(task);
+ if (taskElement != null)
+ {
+ long totalTime = System.currentTimeMillis() - taskElement.startTime;
+ // taskElement.element.setAttribute(TIME_ATTR,
+ // DefaultLogger.formatTime(totalTime));
+ Target target = task.getOwningTarget();
+ TimedElement targetElement = null;
+ if (target != null)
+ {
+ targetElement = (TimedElement) targets.get(target);
+ }
+ if (targetElement == null)
+ {
+ buildElement.element.appendChild(taskElement.element);
+ }
+ else
+ {
+ targetElement.element.appendChild(taskElement.element);
+ }
+ Stack threadStack = getStack();
+ if (!threadStack.empty())
+ {
+ TimedElement poppedStack = (TimedElement) threadStack.pop();
+ if (poppedStack != taskElement)
+ {
+ throw new RuntimeException("Mismatch - popped element = " + poppedStack
+ + " finished task element = " + taskElement);
+ }
+ }
+ tasks.remove(task);
+ }
+ else
+ {
+ throw new RuntimeException("Unknown task " + task + " not in " + tasks);
+ }
+ }
+
+ /**
+ * Get the TimedElement associated with a task.
+ *
+ * Where the task is not found directly, search for unknown elements which
+ * may be hiding the real task
+ */
+ private TimedElement getTaskElement(Task task)
+ {
+ TimedElement element = (TimedElement) tasks.get(task);
+ if (element != null)
+ {
+ return element;
+ }
+
+ for (Enumeration e = tasks.keys(); e.hasMoreElements();)
+ {
+ Task key = (Task) e.nextElement();
+ if (key instanceof UnknownElement)
+ {
+ if (((UnknownElement) key).getTask() == task)
+ {
+ return (TimedElement) tasks.get(key);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Fired when a message is logged, this adds a message element to the most
+ * appropriate parent element (task, target or build) and records the
+ * priority and text of the message.
+ *
+ * @param event
+ * An event with any relevant extra information. Will not be
+ * null.
+ */
+ public void messageLogged(BuildEvent event)
+ {
+
+ if (buildElement == null)
+ {
+ buildElement = new TimedElement();
+ buildElement.startTime = System.currentTimeMillis();
+ buildElement.element = doc.createElement(BUILD_TAG);
+ }
+ int priority = event.getPriority();
+ if (priority > msgOutputLevel)
+ {
+ return;
+ }
+ Element messageElement = doc.createElement(MESSAGE_TAG);
+
+ String name = "debug";
+ switch (event.getPriority())
+ {
+ case MSG_ERR:
+ name = "error";
+ break;
+ case MSG_WARN:
+ name = "warn";
+ break;
+ case MSG_INFO:
+ name = "info";
+ break;
+ default:
+ name = "debug";
+ break;
+ }
+ messageElement.setAttribute(PRIORITY_ATTR, name);
+
+ Throwable ex = event.getException();
+ if (MSG_DEBUG <= msgOutputLevel && ex != null)
+ {
+ Text errText = doc.createCDATASection(StringUtils.getStackTrace(ex));
+ Element stacktrace = doc.createElement(STACKTRACE_TAG);
+ stacktrace.appendChild(errText);
+ buildElement.element.appendChild(stacktrace);
+ }
+ Text messageText = doc.createCDATASection(event.getMessage());
+ messageElement.appendChild(messageText);
+
+ TimedElement parentElement = null;
+
+ Task task = event.getTask();
+
+ Target target = event.getTarget();
+ if (task != null)
+ {
+ parentElement = getTaskElement(task);
+ }
+ if (parentElement == null && target != null)
+ {
+ parentElement = (TimedElement) targets.get(target);
+ }
+
+ /*
+ * if (parentElement == null) { Stack threadStack = (Stack)
+ * threadStacks.get(Thread.currentThread()); if (threadStack != null) {
+ * if (!threadStack.empty()) { parentElement = (TimedElement)
+ * threadStack.peek(); } } }
+ */
+
+ if (parentElement != null)
+ {
+ parentElement.element.appendChild(messageElement);
+ }
+ else
+ {
+ buildElement.element.appendChild(messageElement);
+ }
+ }
+
+ // -------------------------------------------------- BuildLogger interface
+
+ /**
+ * Set the logging level when using this as a Logger
+ *
+ * @param level
+ * the logging level - see
+ * {@link org.apache.tools.ant.Project#MSG_ERR Project} class for
+ * level definitions
+ */
+ public void setMessageOutputLevel(int level)
+ {
+ msgOutputLevel = level;
+ }
+
+ /**
+ * Set the output stream to which logging output is sent when operating as a
+ * logger.
+ *
+ * @param output
+ * the output PrintStream.
+ */
+ public void setOutputPrintStream(PrintStream output)
+ {
+ this.outStream = new PrintStream(output, true);
+ }
+
+ /**
+ * Ignore emacs mode, as it has no meaning in XML format
+ *
+ * @param emacsMode
+ * true if logger should produce emacs compatible output
+ */
+ public void setEmacsMode(boolean emacsMode)
+ {
+ }
+
+ /**
+ * Ignore error print stream. All output will be written to either the XML
+ * log file or the PrintStream provided to setOutputPrintStream
+ *
+ * @param err
+ * the stream we are going to ignore.
+ */
+ public void setErrorPrintStream(PrintStream err)
+ {
+ }
+
+}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/dashboard/widgets/HeliumSummary.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/dashboard/widgets/HeliumSummary.java Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,103 @@
+/*
+============================================================================
+Name : HeliumSummary.java
+Part of : Helium
+
+Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+All rights reserved.
+This component and the accompanying materials are made available
+under the terms of the License "Eclipse Public License v1.0"
+which accompanies this distribution, and is available
+at the URL "http://www.eclipse.org/legal/epl-v10.html".
+
+Initial Contributors:
+Nokia Corporation - initial contribution.
+
+Contributors:
+
+Description:
+
+============================================================================
+ */
+package com.nokia.cruisecontrol.dashboard.widgets;
+
+import java.io.*;
+import java.util.Map;
+import net.sourceforge.cruisecontrol.dashboard.widgets.Widget;
+
+public class HeliumSummary implements Widget
+{
+ public String getDisplayName()
+ {
+ return "Helium summary";
+ }
+
+ public Object getOutput(Map parameters)
+ {
+ String output = "Error retreiving logs.";
+ try
+ {
+ File projectLogDir = findHeliumLogDir(parameters);
+ if (projectLogDir.exists())
+ {
+ File log = findCCLog(projectLogDir);
+ if (log != null)
+ {
+ FileReader fr = new FileReader(log);
+ BufferedReader br = new BufferedReader(fr);
+ String s;
+ output = "";
+ while ((s = br.readLine()) != null)
+ {
+ output += s;
+ }
+ fr.close();
+ }
+ else
+ {
+ output = "Could not find CC summary.";
+ }
+ }
+ else
+ {
+ output = "Could not find " + projectLogDir.getAbsolutePath();
+ }
+ }
+ catch (Exception e)
+ {
+ return e.toString();
+ }
+ return output;
+ }
+
+ protected File findCCLog(File location)
+ {
+ if (location.exists() && location.isDirectory())
+ {
+ File[] list = location.listFiles();
+ for (int i = 0; i < list.length; i++)
+ {
+ if (list[i].isDirectory())
+ {
+ File result = findCCLog(list[i]);
+ if (result != null)
+ return result;
+ }
+ else if (list[i].getName().toLowerCase().endsWith("_cc_summary.html"))
+ {
+ return list[i];
+ }
+ }
+ }
+ return null;
+ }
+
+ protected File findHeliumLogDir(Map parameters) throws Exception
+ {
+ File projectLogDir = (File) parameters.get(Widget.PARAM_BUILD_ARTIFACTS_ROOT);
+ if (projectLogDir != null)
+ return projectLogDir;
+
+ throw new Exception("Could not retieve the log directory.");
+ }
+}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/sourcecontrol/HLMSynergy.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/cc-customizations/src/com/nokia/cruisecontrol/sourcecontrol/HLMSynergy.java Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,1300 @@
+/********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 200 E. Randolph, 25th Floor
+ * Chicago, IL 60601 USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * + Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * + Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
+ * names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ********************************************************************************/
+/*
+ ============================================================================
+ Name : HLMSynergy.java
+ Part of : Helium
+
+ Portion Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
+
+ ============================================================================
+ */
+package com.nokia.cruisecontrol.sourcecontrol;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import org.jdom.*;
+import org.jdom.input.SAXBuilder;
+
+import net.sourceforge.cruisecontrol.CruiseControlException;
+import net.sourceforge.cruisecontrol.SourceControl;
+import net.sourceforge.cruisecontrol.sourcecontrols.SourceControlProperties;
+import net.sourceforge.cruisecontrol.util.ManagedCommandline;
+import net.sourceforge.cruisecontrol.util.Util;
+import net.sourceforge.cruisecontrol.Modification;
+import net.sourceforge.cruisecontrol.util.ValidationHelper;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.Level;
+
+/**
+ * Checks for modifications made to a Telelogic CM Synergy repository. It does
+ * this by examining a provided reference project, getting the tasks from all
+ * folders in that project, and checking the completion time of those tasks
+ * against the last build.
+ *
+ * @author Robert J. Smith
+ */
+public class HLMSynergy implements SourceControl
+{
+ /**
+ * A delimiter used for data values returned from a CM Synergy query
+ */
+ public static final String CCM_ATTR_DELIMITER = "@#@#@#@";
+
+ /**
+ * A delimiter used to mark the end of a multi-lined result from a query
+ */
+ public static final String CCM_END_OBJECT = "<<<#@#@#>>>";
+
+ /**
+ * The default CM Synergy command line client executable
+ */
+ public static final String CCM_EXE = "ccm";
+
+ /**
+ * The environment variable used by CM Synergy to determine which backend
+ * ccmSession to use when issuing commands.
+ */
+ public static final String CCM_SESSION_VAR = "CCM_ADDR";
+
+ /**
+ * The default CM Synergy session map file
+ */
+ public static final String CCM_SESSION_FILE = System.getProperty("user.home") + File.separator
+ + ".ccmsessionmap";
+
+ /**
+ * An instance of the logging class
+ */
+ private static final Logger LOG = Logger.getLogger(HLMSynergy.class);
+
+ /**
+ * Configuration file.
+ */
+ private String filename;
+
+ /**
+ * detectBaselineUpdate
+ */
+ private boolean detectBaselineUpdate;
+ /**
+ * A collection of properties which will be passed to and set within the
+ * builder.
+ */
+
+ private SourceControlProperties properties = new SourceControlProperties();
+
+ /**
+ * The name of the property which will be set and passed to the builder if
+ * any object has changed since the last build.
+ */
+ private String property = "cc.ccm.haschanged";
+
+ /**
+ * The version number delimeter used by the database with which this CM
+ * Synergy session is connected.
+ */
+ private String ccmDelimiter = "-";
+
+ /**
+ * The URL for your installation of Change Synergy
+ */
+ private String changeSynergyURL;
+
+ /**
+ * The CCM database with which we wish to connect
+ */
+ private String ccmDb;
+
+ /**
+ * The CM Synergy executable used for executing commands. If not set, we
+ * will use the default value "ccm".
+ */
+ private String ccmExe;
+
+ /**
+ * The CM Synergy project spec (2 part name).
+ */
+ private String projectSpec;
+
+ /**
+ * The instance number of the project. This is almost always "1", but might
+ * need to be overridden if you are using DCM?
+ */
+ private String projectInstance = "1";
+
+ /**
+ * The CM Synergy project four part name we will use as a template to
+ * determine if any new tasks have been completed.
+ */
+ private String projectFourPartName;
+
+ /**
+ * If set to true, the contents of the folders contained within the
+ * project's reconfigure properties will be updated before we query to find
+ * new tasks.
+ */
+ private boolean updateFolders = true;
+
+ /**
+ * The file which contains the mapping between CM Synergy session names and
+ * IDs.
+ */
+ private File sessionFile;
+
+ /**
+ * The name of the CM Synergy session to use.
+ */
+ private String sessionName;
+
+ /**
+ * The date format as returned by your installation of CM Synergy.
+ */
+ private String ccmDateFormat = "EEE MMM dd HH:mm:ss yyyy"; // Fri Dec 3
+
+ // 17:51:56 2004
+
+ /**
+ * If set to true, the project will be reconfigured when changes are
+ * detected.
+ */
+ private boolean reconfigure;
+
+ /**
+ * Used in conjunction with reconfigure. If set to true, all subprojects
+ * will be reconfigured when changes are detected.
+ */
+ private boolean recurse = true;
+
+ /**
+ * If set to true, the time a task came into a reconfigure folder is used to
+ * determine modified tasks instead of the tasks completion time. Works for
+ * Synergy 6.3SP1 and newer only.
+ */
+ private boolean useBindTime;
+
+ /**
+ * If set to true, the work area location will not be queried and passed to
+ * the builder.
+ */
+ private boolean ignoreWorkarea;
+
+ /**
+ * The locale used for parsing dates.
+ */
+ private Locale locale;
+
+ /**
+ * The language used to set the locale for parsing CM Synergy dates.
+ */
+ private String language = "en";
+
+ /**
+ * A reusable commandline for issuing CM Synergy commands
+ */
+ private ManagedCommandline cmd;
+
+ /**
+ * The country used to set the locale for parsing CM Synergy dates.
+ */
+ private String country = "US";
+
+ /**
+ * The number of modified tasks found
+ */
+ private int numTasks;
+
+ /**
+ * The number of modified objects found
+ */
+ private int numObjects;
+
+ /**
+ * The baseline modification cache.
+ */
+ private ModificationCache baselineCache = new ModificationCache();
+
+ /**
+ * The constructor.
+ */
+ public HLMSynergy()
+ {
+ // Configure the logger to be always in debug mode.
+ LOG.setLevel(Level.DEBUG);
+ }
+
+ /**
+ * Setting the file attribute.
+ */
+ public void setFile(String filename)
+ {
+ LOG.debug("Set CCM configuration file: " + filename);
+ this.filename = filename;
+ }
+
+ /**
+ * Setting the file BaseLine Update.
+ */
+ public void setDetectBaselineUpdate(boolean detectBaselineUpdate)
+ {
+ this.detectBaselineUpdate = detectBaselineUpdate;
+ }
+
+ /**
+ * Sets the name of the CM Synergy executable to use when issuing commands.
+ *
+ * @param ccmExe
+ * the name of the CM Synergy executable
+ */
+ public void setCcmExe(String ccmExe)
+ {
+ this.ccmExe = ccmExe;
+ }
+
+ /**
+ * Sets the CM Synergy project spec to be used as a template for calculating
+ * changes. The value set here can be accessed from within the build as the
+ * property "cc.ccm.project".
+ *
+ * @param projectSpec
+ * The project spec (in 2 part name format).
+ */
+ public void setProject(String projectSpec)
+ {
+ this.projectSpec = projectSpec;
+ }
+
+ /**
+ * Sets the project's instance value. This value will be used in any query
+ * which involves the project. Defaults to "1". This default should work for
+ * most people. You might, however, need to override this value when using
+ * DCM?
+ *
+ * @param projectInstance
+ * The instance number of the project.
+ */
+ public void setInstance(String projectInstance)
+ {
+ this.projectInstance = projectInstance;
+ }
+
+ /**
+ * Sets the URL for your installation of Change Synergy. This is used to
+ * create active links from the modification report to the Change Requests
+ * associated with the modified tasks. If not set, the links will not be
+ * created. If you wish to use this feature, you must also set the ccmdb
+ * attribute to the remote location of the Synergy database.
+ *
+ * @param url
+ * The URL of your ChangeSynergy installation
+ */
+ public void setChangeSynergyURL(String url)
+ {
+ this.changeSynergyURL = url;
+ }
+
+ /**
+ * Sets the remote Synergy database with which to connect. This is only
+ * needed if you wish to create active links from the build results page to
+ * your installation of Change Synergy. If you set this attribute, you must
+ * also set the changesynergyurl attribute.
+ *
+ * @param db
+ * The remote Synergy database with which to connect (e.g.
+ * /ccmdb/mydb).
+ */
+ public void setCcmDb(String db)
+ {
+ this.ccmDb = db;
+ }
+
+ /**
+ * Sets the value of the updateFolders attribute. If set to true, the
+ * contents of the folders contained within the project's reconfigure
+ * properties will be updated before we query to find new tasks.
+ */
+ public void setUpdateFolders(boolean updateFolders)
+ {
+ this.updateFolders = updateFolders;
+ }
+
+ /**
+ * Sets the file which contains the mapping between CM Synergy session names
+ * and IDs. This file should be in the standard properties file format. Each
+ * line should map one name to a CM Synergy session ID (as returned by the
+ * "ccm status" command).
+ *
{% if dep %}{{ _('Deprecated')}}:{% endif %}
+ {{ synops|e }}
+ {%- endif -%}
+ {% endfor %}
+
+
+{% endblock %}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/opensearch.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/opensearch.xml Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,10 @@
+
+
+ {{ project|e }}
+ {% trans docstitle=docstitle|e %}Search {{ docstitle }}{% endtrans %}
+ utf-8
+
+ {{ docstitle|e }}
+{% block extra %} {# Put e.g. an element here. #} {% endblock %}
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/page.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/page.html Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,12 @@
+{% extends "layout.html" %}
+{% set page_links = [
+ (pathto('@rss/' + sourcename), 'application/rss+xml', 'Page Comments'),
+] %}
+{% block body %}
+ {% if oldurl %}
+
+ {% trans %}Note: You requested an out-of-date URL from this server. We've tried to redirect you to the new location of this page, but it may not be the right one.{% endtrans %}
+
+ {% endif %}
+ {{ body }}
+{% endblock %}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/search.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/templates/search.html Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,38 @@
+{% extends "layout.html" %}
+{% set title = _('Search') %}
+{% set script_files = script_files + ['_static/searchtools.js'] %}
+{% block body %}
+
{{ _('Search') }}
+
+ {% trans %}From here you can search these documents. Enter your search
+ words into the box below and click "search". Note that the search
+ function will automatically search for all of the words. Pages
+ containing fewer words won't appear in the result list.{% endtrans %}
+
+
+ {% if search_performed %}
+
{{ _('Search Results') }}
+ {% if not search_results %}
+
{{ _('Your search did not match any results.') }}
+ {% endif %}
+ {% endif %}
+
+ {% if search_results %}
+
+ {% for href, caption, context in search_results %}
+
+{% endblock %}
+{% block footer %}
+ {{ super() }}
+
+{% endblock %}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/Makefile Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,56 @@
+# Makefile for Sphinx LaTeX output
+
+ALLDOCS = $(basename $(wildcard *.tex))
+ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
+ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
+
+# Prefix for archive names
+ARCHIVEPRREFIX =
+
+all: $(ALLPDF)
+all-pdf: $(ALLPDF)
+all-dvi: $(ALLDVI)
+all-ps: all-dvi
+ for f in *.dvi; do dvips $$f; done
+
+zip: all-$(FMT)
+ mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+ cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+ zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
+ rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+tar: all-$(FMT)
+ mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+ cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+ tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
+ rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+bz2: tar
+ bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
+
+# The number of LaTeX runs is quite conservative, but I don't expect it
+# to get run often, so the little extra time won't hurt.
+%.dvi: %.tex
+ latex '$<'
+ latex '$<'
+ latex '$<'
+ -makeindex -s python.ist '$(basename $<).idx'
+ -makeindex -s python.ist '$(basename mod$<).idx'
+ latex '$<'
+ latex '$<'
+
+%.pdf: %.tex
+ pdflatex '$<'
+ pdflatex '$<'
+ pdflatex '$<'
+ -makeindex -s python.ist '$(basename $<).idx'
+ -makeindex -s python.ist '$(basename mod$<).idx'
+ pdflatex '$<'
+ pdflatex '$<'
+
+clean:
+ rm -f *.pdf *.dvi *.ps
+ rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
+
+.PHONY: all all-pdf all-dvi all-ps clean
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/fncychap.sty
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/fncychap.sty Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,683 @@
+%%% Copyright Ulf A. Lindgren
+%%%
+%%% Note Premission is granted to modify this file under
+%%% the condition that it is saved using another
+%%% file and package name.
+%%%
+%%% Revision 1.1 (1997)
+%%%
+%%% Jan. 8th Modified package name base date option
+%%% Jan. 22th Modified FmN and FmTi for error in book.cls
+%%% \MakeUppercase{#}->{\MakeUppercase#}
+%%% Apr. 6th Modified Lenny option to prevent undesired
+%%% skip of line.
+%%% Nov. 8th Fixed \@chapapp for AMS
+%%%
+%%% Revision 1.2 (1998)
+%%%
+%%% Feb. 11th Fixed appendix problem related to Bjarne
+%%% Aug. 11th Fixed problem related to 11pt and 12pt
+%%% suggested by Tomas Lundberg. THANKS!
+%%%
+%%% Revision 1.3 (2004)
+%%% Sep. 20th problem with frontmatter, mainmatter and
+%%% backmatter, pointed out by Lapo Mori
+%%%
+%%% Revision 1.31 (2004)
+%%% Sep. 21th problem with the Rejne definition streched text
+%%% caused ugly gaps in the vrule aligned with the title
+%%% text. Kindly pointed out to me by Hendri Adriaens
+%%%
+%%% Revision 1.32 (2005)
+%%% Jun. 23th compatibility problem with the KOMA class 'scrbook.cls'
+%%% a remedy is a redefinition of '\@schapter' in
+%%% line with that used in KOMA. The problem was pointed
+%%% out to me by Mikkel Holm Olsen
+%%%
+%%% Revision 1.33 (2005)
+%%% Aug. 9th misspelled ``TWELV'' corrected, the error was pointed
+%%% out to me by George Pearson
+%%%
+%%% Revision 1.34 (2007)
+%%% Added an alternative to Lenny provided by Peter
+%%% Osborne (2005-11-28)
+%%% Corrected front, main and back matter, based on input
+%%% from Bas van Gils (2006-04-24)
+%%% Jul. 30th Added Bjornstrup option provided by Jean-Marc
+%%% Francois (2007-01-05).
+%%% Reverted to \MakeUppercase{#} see rev 1.1, solved
+%%% problem with MakeUppercase and MakeLowercase pointed
+%%% out by Marco Feuerstein (2007-06-06)
+
+
+%%% Last modified Jul. 2007
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{fncychap}
+ [2007/07/30 v1.34
+ LaTeX package (Revised chapters)]
+
+%%%% For conditional inclusion of color
+\newif\ifusecolor
+\usecolorfalse
+
+
+
+%%%% DEFINITION OF Chapapp variables
+\newcommand{\CNV}{\huge\bfseries}
+\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
+
+
+%%%% DEFINITION OF TheChapter variables
+\newcommand{\CNoV}{\huge\bfseries}
+\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
+
+\newif\ifUCN
+\UCNfalse
+\newif\ifLCN
+\LCNfalse
+\def\ChNameLowerCase{\LCNtrue\UCNfalse}
+\def\ChNameUpperCase{\UCNtrue\LCNfalse}
+\def\ChNameAsIs{\UCNfalse\LCNfalse}
+
+%%%%% Fix for AMSBook 971008
+
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
+
+
+%%%%% Fix for Bjarne and appendix 980211
+
+\newif\ifinapp
+\inappfalse
+\renewcommand\appendix{\par
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \inapptrue%
+ \renewcommand\@chapapp{\appendixname}%
+ \renewcommand\thechapter{\@Alph\c@chapter}}
+
+%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
+
+\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{}
+
+%%%%%
+
+
+
+\newcommand{\FmN}[1]{%
+\ifUCN
+ {\MakeUppercase{#1}}\LCNfalse
+\else
+ \ifLCN
+ {\MakeLowercase{#1}}\UCNfalse
+ \else #1
+ \fi
+\fi}
+
+
+%%%% DEFINITION OF Title variables
+\newcommand{\CTV}{\Huge\bfseries}
+\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
+
+%%%% DEFINITION OF the basic rule width
+\newlength{\RW}
+\setlength{\RW}{1pt}
+\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
+
+\newif\ifUCT
+\UCTfalse
+\newif\ifLCT
+\LCTfalse
+\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
+\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
+\def\ChTitleAsIs{\UCTfalse\LCTfalse}
+\newcommand{\FmTi}[1]{%
+\ifUCT
+ {\MakeUppercase{#1}}\LCTfalse
+\else
+ \ifLCT
+ {\MakeLowercase{#1}}\UCTfalse
+ \else {#1}
+ \fi
+\fi}
+
+
+
+\newlength{\mylen}
+\newlength{\myhi}
+\newlength{\px}
+\newlength{\py}
+\newlength{\pyy}
+\newlength{\pxx}
+
+
+\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
+
+\newcommand{\DOCH}{%
+ \CNV\FmN{\@chapapp}\space \CNoV\thechapter
+ \par\nobreak
+ \vskip 20\p@
+ }
+\newcommand{\DOTI}[1]{%
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@
+ }
+\newcommand{\DOTIS}[1]{%
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@
+ }
+
+%%%%%% SONNY DEF
+
+\DeclareOption{Sonny}{%
+ \ChNameVar{\Large\sf}
+ \ChNumVar{\Huge}
+ \ChTitleVar{\Large\sf}
+ \ChRuleWidth{0.5pt}
+ \ChNameUpperCase
+ \renewcommand{\DOCH}{%
+ \raggedleft
+ \CNV\FmN{\@chapapp}\space \CNoV\thechapter
+ \par\nobreak
+ \vskip 40\p@}
+ \renewcommand{\DOTI}[1]{%
+ \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
+ \vskip 5\p@
+ \CTV\FmTi{#1}\par\nobreak
+ \mghrulefill{\RW}\par\nobreak
+ \vskip 40\p@}
+ \renewcommand{\DOTIS}[1]{%
+ \CTV\raggedleft\mghrulefill{\RW}\par\nobreak
+ \vskip 5\p@
+ \CTV\FmTi{#1}\par\nobreak
+ \mghrulefill{\RW}\par\nobreak
+ \vskip 40\p@}
+}
+
+%%%%%% LENNY DEF
+
+\DeclareOption{Lenny}{%
+
+ \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
+ \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
+ \ChTitleVar{\Huge\bfseries\rm}
+ \ChRuleWidth{1pt}
+ \renewcommand{\DOCH}{%
+ \settowidth{\px}{\CNV\FmN{\@chapapp}}
+ \addtolength{\px}{2pt}
+ \settoheight{\py}{\CNV\FmN{\@chapapp}}
+ \addtolength{\py}{1pt}
+
+ \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
+ \addtolength{\mylen}{1pt}
+ \settowidth{\pxx}{\CNoV\thechapter}
+ \addtolength{\pxx}{-1pt}
+
+ \settoheight{\pyy}{\CNoV\thechapter}
+ \addtolength{\pyy}{-2pt}
+ \setlength{\myhi}{\pyy}
+ \addtolength{\myhi}{-1\py}
+ \par
+ \parbox[b]{\textwidth}{%
+ \rule[\py]{\RW}{\myhi}%
+ \hskip -\RW%
+ \rule[\pyy]{\px}{\RW}%
+ \hskip -\px%
+ \raggedright%
+ \CNV\FmN{\@chapapp}\space\CNoV\thechapter%
+ \hskip1pt%
+ \mghrulefill{\RW}%
+ \rule{\RW}{\pyy}\par\nobreak%
+ \vskip -\baselineskip%
+ \vskip -\pyy%
+ \hskip \mylen%
+ \mghrulefill{\RW}\par\nobreak%
+ \vskip \pyy}%
+ \vskip 20\p@}
+
+
+ \renewcommand{\DOTI}[1]{%
+ \raggedright
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@}
+
+ \renewcommand{\DOTIS}[1]{%
+ \raggedright
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@}
+ }
+
+%%%%%% Peter Osbornes' version of LENNY DEF
+
+\DeclareOption{PetersLenny}{%
+
+% five new lengths
+\newlength{\bl} % bottom left : orig \space
+\setlength{\bl}{6pt}
+\newcommand{\BL}[1]{\setlength{\bl}{#1}}
+\newlength{\br} % bottom right : orig 1pt
+\setlength{\br}{1pt}
+\newcommand{\BR}[1]{\setlength{\br}{#1}}
+\newlength{\tl} % top left : orig 2pt
+\setlength{\tl}{2pt}
+\newcommand{\TL}[1]{\setlength{\tl}{#1}}
+\newlength{\trr} % top right :orig 1pt
+\setlength{\trr}{1pt}
+\newcommand{\TR}[1]{\setlength{\trr}{#1}}
+\newlength{\blrule} % top right :orig 1pt
+\setlength{\trr}{0pt}
+\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}}
+
+
+ \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
+ \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
+ \ChTitleVar{\Huge\bfseries\rm}
+ \ChRuleWidth{1pt}
+\renewcommand{\DOCH}{%
+
+
+%%%%%%% tweaks for 1--9 and A--Z
+\ifcase\c@chapter\relax%
+\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1
+\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2
+\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3
+\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4
+\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5
+\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6
+\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7
+\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8
+\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9
+\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10
+\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11
+\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12
+\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13
+\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14
+\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15
+\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16
+\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17
+\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18
+\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19
+\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20
+\fi
+
+\ifinapp\ifcase\c@chapter\relax%
+\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A
+\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B
+\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C
+\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D
+\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E
+\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F
+\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I
+\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K
+\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M
+\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N
+\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O
+\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P
+\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q
+\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R
+\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S
+\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T
+\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U
+\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V
+\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X
+\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y
+\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z
+\fi\fi
+%%%%%%%
+ \settowidth{\px}{\CNV\FmN{\@chapapp}}
+ \addtolength{\px}{\tl} %MOD change 2pt to \tl
+ \settoheight{\py}{\CNV\FmN{\@chapapp}}
+ \addtolength{\py}{1pt}
+
+ \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
+ \addtolength{\mylen}{\trr}% MOD change 1pt to \tr
+ \settowidth{\pxx}{\CNoV\thechapter}
+ \addtolength{\pxx}{-1pt}
+
+ \settoheight{\pyy}{\CNoV\thechapter}
+ \addtolength{\pyy}{-2pt}
+ \setlength{\myhi}{\pyy}
+ \addtolength{\myhi}{-1\py}
+ \par
+ \parbox[b]{\textwidth}{%
+ \rule[\py]{\RW}{\myhi}%
+ \hskip -\RW%
+ \rule[\pyy]{\px}{\RW}%
+ \hskip -\px%
+ \raggedright%
+ \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD
+% \CNV\FmN{\@chapapp}\space\CNoV\thechapter %ORIGINAL
+ \hskip\br% %MOD 1pt to \br
+ \mghrulefill{\RW}%
+ \rule{\RW}{\pyy}\par\nobreak%
+ \vskip -\baselineskip%
+ \vskip -\pyy%
+ \hskip \mylen%
+ \mghrulefill{\RW}\par\nobreak%
+ \vskip \pyy}%
+ \vskip 20\p@}
+
+
+ \renewcommand{\DOTI}[1]{%
+ \raggedright
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@}
+
+ \renewcommand{\DOTIS}[1]{%
+ \raggedright
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@}
+ }
+
+
+%
+
+
+%%%%%% BJORNSTRUP DEF
+
+\DeclareOption{Bjornstrup}{%
+ \usecolortrue
+ % pzc (Zapf Chancelery) is nice. ppl (Palatino) is cool too.
+ \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont}
+ \ChTitleVar{\raggedleft\Large\sffamily\bfseries}
+
+ \setlength{\myhi}{10pt} % Space between grey box border and text
+ \setlength{\mylen}{\textwidth}
+ \addtolength{\mylen}{-2\myhi}
+ \renewcommand{\DOCH}{%
+ \settowidth{\py}{\CNoV\thechapter}
+ \addtolength{\py}{-10pt} % Amount of space by which the
+% % number is shifted right
+ \fboxsep=0pt%
+ \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}%
+ \kern-\py\raise20pt%
+ \hbox{\color[gray]{.5}\CNoV\thechapter}\\%
+ }
+
+ \renewcommand{\DOTI}[1]{%
+ \nointerlineskip\raggedright%
+ \fboxsep=\myhi%
+ \vskip-1ex%
+ \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
+ \vskip 40\p@%
+ }
+
+ \renewcommand{\DOTIS}[1]{%
+ \fboxsep=0pt
+ \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\%
+ \nointerlineskip\raggedright%
+ \fboxsep=\myhi%
+ \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
+ \vskip 40\p@%
+ }
+}
+
+
+%%%%%%% GLENN DEF
+
+
+\DeclareOption{Glenn}{%
+ \ChNameVar{\bfseries\Large\sf}
+ \ChNumVar{\Huge}
+ \ChTitleVar{\bfseries\Large\rm}
+ \ChRuleWidth{1pt}
+ \ChNameUpperCase
+ \ChTitleUpperCase
+ \renewcommand{\DOCH}{%
+ \settoheight{\myhi}{\CTV\FmTi{Test}}
+ \setlength{\py}{\baselineskip}
+ \addtolength{\py}{\RW}
+ \addtolength{\py}{\myhi}
+ \setlength{\pyy}{\py}
+ \addtolength{\pyy}{-1\RW}
+
+ \raggedright
+ \CNV\FmN{\@chapapp}\space\CNoV\thechapter
+ \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
+
+ \renewcommand{\DOTI}[1]{%
+ \addtolength{\pyy}{-4pt}
+ \settoheight{\myhi}{\CTV\FmTi{#1}}
+ \addtolength{\myhi}{\py}
+ \addtolength{\myhi}{-1\RW}
+ \vskip -1\pyy
+ \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
+ \raggedleft\CTV\FmTi{#1}\par\nobreak
+ \vskip 80\p@}
+
+\newlength{\backskip}
+ \renewcommand{\DOTIS}[1]{%
+% \setlength{\py}{10pt}
+% \setlength{\pyy}{\py}
+% \addtolength{\pyy}{\RW}
+% \setlength{\myhi}{\baselineskip}
+% \addtolength{\myhi}{\pyy}
+% \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
+% \addtolength{}{}
+%\vskip -1\baselineskip
+% \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
+% \raggedleft\CTV\FmTi{#1}\par\nobreak
+% \vskip 60\p@}
+%% Fix suggested by Tomas Lundberg
+ \setlength{\py}{25pt} % eller vad man vill
+ \setlength{\pyy}{\py}
+ \setlength{\backskip}{\py}
+ \addtolength{\backskip}{2pt}
+ \addtolength{\pyy}{\RW}
+ \setlength{\myhi}{\baselineskip}
+ \addtolength{\myhi}{\pyy}
+ \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
+ \vskip -1\backskip
+ \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
+ \raggedleft\CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@}
+ }
+
+%%%%%%% CONNY DEF
+
+\DeclareOption{Conny}{%
+ \ChNameUpperCase
+ \ChTitleUpperCase
+ \ChNameVar{\centering\Huge\rm\bfseries}
+ \ChNumVar{\Huge}
+ \ChTitleVar{\centering\Huge\rm}
+ \ChRuleWidth{2pt}
+
+ \renewcommand{\DOCH}{%
+ \mghrulefill{3\RW}\par\nobreak
+ \vskip -0.5\baselineskip
+ \mghrulefill{\RW}\par\nobreak
+ \CNV\FmN{\@chapapp}\space \CNoV\thechapter
+ \par\nobreak
+ \vskip -0.5\baselineskip
+ }
+ \renewcommand{\DOTI}[1]{%
+ \mghrulefill{\RW}\par\nobreak
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 60\p@
+ }
+ \renewcommand{\DOTIS}[1]{%
+ \mghrulefill{\RW}\par\nobreak
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 60\p@
+ }
+ }
+
+%%%%%%% REJNE DEF
+
+\DeclareOption{Rejne}{%
+
+ \ChNameUpperCase
+ \ChTitleUpperCase
+ \ChNameVar{\centering\Large\rm}
+ \ChNumVar{\Huge}
+ \ChTitleVar{\centering\Huge\rm}
+ \ChRuleWidth{1pt}
+ \renewcommand{\DOCH}{%
+ \settoheight{\py}{\CNoV\thechapter}
+ \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
+ \addtolength{\py}{-1pt}
+ \CNV\FmN{\@chapapp}\par\nobreak
+ \vskip 20\p@
+ \setlength{\myhi}{2\baselineskip}
+ \setlength{\px}{\myhi}
+ \addtolength{\px}{-1\RW}
+ \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
+ 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
+ \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31
+ }
+ \renewcommand{\DOTI}[1]{%
+ \setlength{\mylen}{\textwidth}
+ \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
+ \addtolength{\mylen}{-2\RW}
+ {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak%
+ \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}%
+ \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31
+ }
+ \renewcommand{\DOTIS}[1]{%
+ \setlength{\py}{\fboxrule}
+ \setlength{\fboxrule}{\RW}
+ \setlength{\mylen}{\textwidth}
+ \addtolength{\mylen}{-2\RW}
+ \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}}
+ \setlength{\fboxrule}{\py}
+ \vskip 60\p@
+ }
+ }
+
+
+%%%%%%% BJARNE DEF
+
+\DeclareOption{Bjarne}{%
+ \ChNameUpperCase
+ \ChTitleUpperCase
+ \ChNameVar{\raggedleft\normalsize\rm}
+ \ChNumVar{\raggedleft \bfseries\Large}
+ \ChTitleVar{\raggedleft \Large\rm}
+ \ChRuleWidth{1pt}
+
+
+%% Note thechapter -> c@chapter fix appendix bug
+%% Fixed misspelled 12
+
+ \newcounter{AlphaCnt}
+ \newcounter{AlphaDecCnt}
+ \newcommand{\AlphaNo}{%
+ \ifcase\number\theAlphaCnt
+ \ifnum\c@chapter=0
+ ZERO\else{}\fi
+ \or ONE\or TWO\or THREE\or FOUR\or FIVE
+ \or SIX\or SEVEN\or EIGHT\or NINE\or TEN
+ \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN
+ \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
+}
+
+ \newcommand{\AlphaDecNo}{%
+ \setcounter{AlphaDecCnt}{0}
+ \@whilenum\number\theAlphaCnt>0\do
+ {\addtocounter{AlphaCnt}{-10}
+ \addtocounter{AlphaDecCnt}{1}}
+ \ifnum\number\theAlphaCnt=0
+ \else
+ \addtocounter{AlphaDecCnt}{-1}
+ \addtocounter{AlphaCnt}{10}
+ \fi
+
+
+ \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
+ FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
+ }
+ \newcommand{\TheAlphaChapter}{%
+
+ \ifinapp
+ \thechapter
+ \else
+ \setcounter{AlphaCnt}{\c@chapter}
+ \ifnum\c@chapter<20
+ \AlphaNo
+ \else
+ \AlphaDecNo\AlphaNo
+ \fi
+ \fi
+ }
+ \renewcommand{\DOCH}{%
+ \mghrulefill{\RW}\par\nobreak
+ \CNV\FmN{\@chapapp}\par\nobreak
+ \CNoV\TheAlphaChapter\par\nobreak
+ \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
+ \vskip 20\p@
+ }
+ \renewcommand{\DOTI}[1]{%
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@
+ }
+ \renewcommand{\DOTIS}[1]{%
+ \CTV\FmTi{#1}\par\nobreak
+ \vskip 40\p@
+ }
+}
+
+\DeclareOption*{%
+ \PackageWarning{fancychapter}{unknown style option}
+ }
+
+\ProcessOptions* \relax
+
+\ifusecolor
+ \RequirePackage{color}
+\fi
+\def\@makechapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
+ \DOCH
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
+ \DOTI{#1}%
+ \else%
+ \DOTIS{#1}%
+ \fi
+ }}
+
+
+%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32)
+
+%%OUT:
+%\def\@schapter#1{\if@twocolumn
+% \@topnewpage[\@makeschapterhead{#1}]%
+% \else
+% \@makeschapterhead{#1}%
+% \@afterheading
+% \fi}
+
+%%IN:
+\def\@schapter#1{%
+\if@twocolumn%
+ \@makeschapterhead{#1}%
+\else%
+ \@makeschapterhead{#1}%
+ \@afterheading%
+\fi}
+
+%%% End: To avoid problem with scrbook.cls (fncychap version 1.32)
+
+\def\@makeschapterhead#1{%
+ \vspace*{50\p@}%
+ {\parindent \z@ \raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \DOTIS{#1}
+ \vskip 40\p@
+ }}
+
+\endinput
+
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/howto.cls
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/howto.cls Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,66 @@
+%
+% howto.cls for Sphinx
+%
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{howto}[2008/10/18 Document class (Sphinx HOWTO)]
+
+% Pass all given class options to the parent class.
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass[twoside]{article}
+
+% Set some sane defaults for section numbering depth and TOC depth. You can
+% reset these counters in your preamble.
+%
+\setcounter{secnumdepth}{2}
+
+% Change the title page to look a bit better, and fit in with the fncychap
+% ``Bjarne'' style a bit better.
+%
+\renewcommand{\maketitle}{
+ \rule{\textwidth}{1pt}
+ \ifsphinxpdfoutput
+ \begingroup
+ % This \def is required to deal with multi-line authors; it
+ % changes \\ to ', ' (comma-space), making it pass muster for
+ % generating document info in the PDF file.
+ \def\\{, }
+ \pdfinfo{
+ /Author (\@author)
+ /Title (\@title)
+ }
+ \endgroup
+ \fi
+ \begin{flushright}
+ \sphinxlogo%
+ {\rm\Huge\py@HeaderFamily \@title} \par
+ {\em\large\py@HeaderFamily \py@release\releaseinfo} \par
+ \vspace{25pt}
+ {\Large\py@HeaderFamily \@author} \par
+ \vspace{25pt}
+ \@date \par
+ \py@authoraddress \par
+ \end{flushright}
+ \@thanks
+ \setcounter{footnote}{0}
+ \let\thanks\relax\let\maketitle\relax
+ %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
+}
+
+\let\py@OldTableofcontents=\tableofcontents
+\renewcommand{\tableofcontents}{
+ \begingroup
+ \parskip = 0mm
+ \py@OldTableofcontents
+ \endgroup
+ \rule{\textwidth}{1pt}
+ \vspace{12pt}
+}
+
+\@ifundefined{fancyhf}{
+ \pagestyle{plain}}{
+ \pagestyle{normal}} % start this way; change for
+\pagenumbering{arabic} % ToC & chapters
+
+\thispagestyle{empty}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/manual.cls
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/manual.cls Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,103 @@
+%
+% manual.cls for Sphinx
+%
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{manual}[2008/10/18 Document class (Sphinx manual)]
+
+% Pass all given class options to the parent class.
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
+\ProcessOptions\relax
+\LoadClass[twoside,openright]{report}
+
+% Set some sane defaults for section numbering depth and TOC depth. You can
+% reset these counters in your preamble.
+%
+\setcounter{secnumdepth}{2}
+\setcounter{tocdepth}{1}
+
+% Change the title page to look a bit better, and fit in with the fncychap
+% ``Bjarne'' style a bit better.
+%
+\renewcommand{\maketitle}{%
+ \begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \rule{\textwidth}{1pt}%
+ \ifsphinxpdfoutput
+ \begingroup
+ % This \def is required to deal with multi-line authors; it
+ % changes \\ to ', ' (comma-space), making it pass muster for
+ % generating document info in the PDF file.
+ \def\\{, }
+ \pdfinfo{
+ /Author (\@author)
+ /Title (\@title)
+ }
+ \endgroup
+ \fi
+ \begin{flushright}%
+ \sphinxlogo%
+ {\rm\Huge\py@HeaderFamily \@title \par}%
+ {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par}
+ \vfill
+ {\LARGE\py@HeaderFamily \@author \par}
+ \vfill\vfill
+ {\large
+ \@date \par
+ \vfill
+ \py@authoraddress \par
+ }%
+ \end{flushright}%\par
+ \@thanks
+ \end{titlepage}%
+ \cleardoublepage%
+ \setcounter{footnote}{0}%
+ \let\thanks\relax\let\maketitle\relax
+ %\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
+}
+
+
+% Catch the end of the {abstract} environment, but here make sure the abstract
+% is followed by a blank page if the 'openright' option is used.
+%
+\let\py@OldEndAbstract=\endabstract
+\renewcommand{\endabstract}{
+ \if@openright
+ \ifodd\value{page}
+ \typeout{Adding blank page after the abstract.}
+ \vfil\pagebreak
+ \fi
+ \fi
+ \py@OldEndAbstract
+}
+
+% This wraps the \tableofcontents macro with all the magic to get the spacing
+% right and have the right number of pages if the 'openright' option has been
+% used. This eliminates a fair amount of crud in the individual document files.
+%
+\let\py@OldTableofcontents=\tableofcontents
+\renewcommand{\tableofcontents}{%
+ \setcounter{page}{1}%
+ \pagebreak%
+ \pagestyle{plain}%
+ {%
+ \parskip = 0mm%
+ \py@OldTableofcontents%
+ \if@openright%
+ \ifodd\value{page}%
+ \typeout{Adding blank page after the table of contents.}%
+ \pagebreak\hspace{0pt}%
+ \fi%
+ \fi%
+ \cleardoublepage%
+ }%
+ \pagenumbering{arabic}%
+ \@ifundefined{fancyhf}{}{\pagestyle{normal}}%
+}
+
+% This is needed to get the width of the section # area wide enough in the
+% library reference. Doing it here keeps it the same for all the manuals.
+%
+\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/python.ist
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/python.ist Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,11 @@
+line_max 100
+headings_flag 1
+heading_prefix " \\bigletter "
+
+preamble "\\begin{theindex}
+\\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}}
+
+"
+
+symhead_positive "{Symbols}"
+numhead_positive "{Numbers}"
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/sphinx.sty
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/sphinx.sty Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,709 @@
+%
+% sphinx.sty
+%
+% Adapted from the old python.sty, mostly written by Fred Drake,
+% by Georg Brandl.
+%
+
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{sphinx}[2008/05/01 LaTeX package (Sphinx markup)]
+
+\RequirePackage{textcomp}
+\RequirePackage{fancyhdr}
+\RequirePackage{fancybox}
+\RequirePackage{titlesec}
+\RequirePackage{tabulary}
+\RequirePackage{amsmath} % for \text
+\RequirePackage{makeidx}
+\RequirePackage{framed}
+\RequirePackage{color}
+\RequirePackage{fancyvrb}
+\RequirePackage{threeparttable}
+
+% Redefine these colors to your liking in the preamble.
+\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
+\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486}
+\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388}
+% Redefine these colors to something not white if you want to have colored
+% background and border for code examples.
+\definecolor{VerbatimColor}{rgb}{1,1,1}
+\definecolor{VerbatimBorderColor}{rgb}{1,1,1}
+
+% Uncomment these two lines to ignore the paper size and make the page
+% size more like a typical published manual.
+%\renewcommand{\paperheight}{9in}
+%\renewcommand{\paperwidth}{8.5in} % typical squarish manual
+%\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python''
+
+% For graphicx, check if we are compiling under latex or pdflatex.
+\ifx\pdftexversion\undefined
+ \usepackage{graphicx}
+\else
+ \usepackage[pdftex]{graphicx}
+\fi
+
+% for PDF output, use colors and maximal compression
+\newif\ifsphinxpdfoutput\sphinxpdfoutputfalse
+\ifx\pdfoutput\undefined\else\ifcase\pdfoutput
+ \let\py@NormalColor\relax
+ \let\py@TitleColor\relax
+\else
+ \sphinxpdfoutputtrue
+ \input{pdfcolor}
+ \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
+ \def\py@TitleColor{\color{TitleColor}}
+ \pdfcompresslevel=9
+\fi\fi
+
+% XeLaTeX can do colors, too
+\ifx\XeTeXrevision\undefined\else
+ \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
+ \def\py@TitleColor{\color{TitleColor}}
+\fi
+
+% Increase printable page size (copied from fullpage.sty)
+\topmargin 0pt
+\advance \topmargin by -\headheight
+\advance \topmargin by -\headsep
+
+% attempt to work a little better for A4 users
+\textheight \paperheight
+\advance\textheight by -2in
+
+\oddsidemargin 0pt
+\evensidemargin 0pt
+%\evensidemargin -.25in % for ``manual size'' documents
+\marginparwidth 0.5in
+
+\textwidth \paperwidth
+\advance\textwidth by -2in
+
+
+% Style parameters and macros used by most documents here
+\raggedbottom
+\sloppy
+\parindent = 0mm
+\parskip = 2mm
+\hbadness = 5000 % don't print trivial gripes
+
+\pagestyle{empty} % start this way; change for
+\pagenumbering{roman} % ToC & chapters
+
+% Use this to set the font family for headers and other decor:
+\newcommand{\py@HeaderFamily}{\sffamily\bfseries}
+
+% Redefine the 'normal' header/footer style when using "fancyhdr" package:
+\@ifundefined{fancyhf}{}{
+ % Use \pagestyle{normal} as the primary pagestyle for text.
+ \fancypagestyle{normal}{
+ \fancyhf{}
+ \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
+ \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
+ \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
+ \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}}
+ \renewcommand{\headrulewidth}{0.4pt}
+ \renewcommand{\footrulewidth}{0.4pt}
+ }
+ % Update the plain style so we get the page number & footer line,
+ % but not a chapter or section title. This is to keep the first
+ % page of a chapter and the blank page between chapters `clean.'
+ \fancypagestyle{plain}{
+ \fancyhf{}
+ \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0.4pt}
+ }
+}
+
+% Some custom font markup commands.
+%
+\newcommand{\strong}[1]{{\bf #1}}
+\newcommand{\code}[1]{\texttt{#1}}
+\newcommand{\bfcode}[1]{\code{\bfseries#1}}
+\newcommand{\samp}[1]{`\code{#1}'}
+\newcommand{\email}[1]{\textsf{#1}}
+
+\newcommand{\py@modulebadkey}{{--just-some-junk--}}
+
+% Redefine the Verbatim environment to allow border and background colors.
+% The original environment is still used for verbatims within tables.
+\let\OriginalVerbatim=\Verbatim
+\let\endOriginalVerbatim=\endVerbatim
+
+% Play with vspace to be able to keep the indentation.
+\newlength\distancetoright
+\newlength\leftsidespace
+\def\mycolorbox#1{%
+ \setlength\leftsidespace{\@totalleftmargin}%
+ \setlength\distancetoright{\textwidth}%
+ \advance\distancetoright -\@totalleftmargin %
+ \noindent\hspace*{\@totalleftmargin}%
+ \fcolorbox{VerbatimBorderColor}{VerbatimColor}{%
+ \begin{minipage}{\distancetoright}%
+ \smallskip%
+ \noindent\hspace*{-\leftsidespace}%
+ #1
+ \end{minipage}%
+ }%
+}
+\def\FrameCommand{\mycolorbox}
+
+\renewcommand{\Verbatim}[1][1]{%
+ % The list environement is needed to control perfectly the vertical
+ % space.
+ \list{}{%
+ \setlength\parskip{0pt}%
+ \setlength\itemsep{0ex}%
+ \setlength\topsep{0ex}%
+ \setlength\partopsep{0pt}%
+ \setlength\leftmargin{0pt}%
+ }%
+ \item\MakeFramed {\FrameRestore}%
+ \small%
+ \OriginalVerbatim[#1]%
+}
+\renewcommand{\endVerbatim}{%
+ \endOriginalVerbatim%
+ \endMakeFramed%
+ \endlist%
+}
+
+
+% Index-entry generation support.
+%
+
+% Command to generate two index entries (using subentries)
+\newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}}
+
+% And three entries (using only one level of subentries)
+\newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}}
+
+% And four (again, using only one level of subentries)
+\newcommand{\indexiv}[4]{
+\index{#1!#2 #3 #4}
+\index{#2!#3 #4, #1}
+\index{#3!#4, #1 #2}
+\index{#4!#1 #2 #3}
+}
+
+% support for the module index
+\newif\ifpy@UseModuleIndex
+\py@UseModuleIndexfalse
+
+\newcommand{\makemodindex}{
+ \newwrite\modindexfile
+ \openout\modindexfile=mod\jobname.idx
+ \py@UseModuleIndextrue
+}
+
+\newcommand{\printmodindex}{
+ \@input@{mod\jobname.ind}
+}
+
+% Add the defining entry for a module
+\newcommand{\py@modindex}[2]{%
+ \renewcommand{\py@thismodule}{#1}
+ \ifpy@UseModuleIndex%
+ \@ifundefined{py@modplat@\py@thismodulekey}{
+ \write\modindexfile{\protect\indexentry{#1@{\texttt{#1}}|hyperpage}{\thepage}}%
+ }{\write\modindexfile{\protect\indexentry{#1@{\texttt{#1 }%
+ \emph{(\platformof{\py@thismodulekey})}}|hyperpage}{\thepage}}%
+ }
+ \fi%
+}
+
+% "Current" keys
+\newcommand{\py@thisclass}{}
+\newcommand{\py@thismodule}{}
+\newcommand{\py@thismodulekey}{}
+\newcommand{\py@thismoduletype}{}
+\newcommand{\py@emptymodule}{}
+
+% \declaremodule[key]{type}{name}
+\newcommand{\declaremodule}[3][\py@modulebadkey]{
+ \renewcommand{\py@thismoduletype}{#2}
+ \ifx\py@modulebadkey#1
+ \renewcommand{\py@thismodulekey}{#3}
+ \else
+ \renewcommand{\py@thismodulekey}{#1}
+ \fi
+ \py@modindex{#3}{}
+ %\label{module-\py@thismodulekey}
+}
+
+% Record module platforms for the Module Index
+\newif\ifpy@ModPlatformFileIsOpen \py@ModPlatformFileIsOpenfalse
+\long\def\py@writeModPlatformFile#1{%
+ \protected@write\py@ModPlatformFile%
+ {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
+ {\string#1}%
+}
+\newcommand{\py@ModPlatformFilename}{\jobname.pla}
+\newcommand{\platform}[1]{
+ \ifpy@ModPlatformFileIsOpen\else
+ \newwrite\py@ModPlatformFile
+ \openout\py@ModPlatformFile=\py@ModPlatformFilename
+ \py@ModPlatformFileIsOpentrue
+ \fi
+ \py@writeModPlatformFile{\py@defplatform{\py@thismodulekey}{#1}}
+}
+\newcommand{\py@defplatform}[2]{\expandafter\def\csname py@modplat@#1\endcsname{#2}}
+\newcommand{\platformof}[1]{\csname py@modplat@#1\endcsname}
+
+\InputIfFileExists{\jobname.pla}{}{}
+
+% \moduleauthor{name}{email}
+\newcommand{\moduleauthor}[2]{}
+
+% \sectionauthor{name}{email}
+\newcommand{\sectionauthor}[2]{}
+
+% Ignore module synopsis.
+\newcommand{\modulesynopsis}[1]{}
+
+% Reset "current" objects.
+\newcommand{\resetcurrentobjects}{
+ \renewcommand{\py@thisclass}{}
+ \renewcommand{\py@thismodule}{}
+ \renewcommand{\py@thismodulekey}{}
+ \renewcommand{\py@thismoduletype}{}
+}
+
+% Augment the sectioning commands used to get our own font family in place,
+% and reset some internal data items:
+\titleformat{\section}{\Large\py@HeaderFamily}%
+ {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor}
+\titleformat{\subsection}{\large\py@HeaderFamily}%
+ {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
+\titleformat{\subsubsection}{\py@HeaderFamily}%
+ {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
+\titleformat{\paragraph}{\large\py@HeaderFamily}%
+ {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor}
+
+
+% Now for a lot of semantically-loaded environments that do a ton of magical
+% things to get the right formatting and index entries for the stuff in
+% Python modules and C API.
+
+
+% {fulllineitems} is used in one place in libregex.tex, but is really for
+% internal use in this file.
+%
+\newcommand{\py@itemnewline}[1]{%
+ \@tempdima\linewidth%
+ \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}%
+}
+
+\newenvironment{fulllineitems}{
+ \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt
+ \rightmargin 0pt \topsep -\parskip \partopsep \parskip
+ \itemsep -\parsep
+ \let\makelabel=\py@itemnewline}
+}{\end{list}}
+
+% \optional is mostly for use in the arguments parameters to the various
+% {*desc} environments defined below, but may be used elsewhere. Known to
+% be used in the debugger chapter.
+%
+% Typical usage:
+%
+% \begin{funcdesc}{myfunc}{reqparm\optional{, optparm}}
+% ^^^ ^^^
+% No space here No space here
+%
+% When a function has multiple optional parameters, \optional should be
+% nested, not chained. This is right:
+%
+% \begin{funcdesc}{myfunc}{\optional{parm1\optional{, parm2}}}
+%
+\let\py@badkey=\@undefined
+
+\newcommand{\optional}[1]{%
+ {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
+
+% This can be used when a function or method accepts an varying number
+% of arguments, such as by using the *args syntax in the parameter list.
+\newcommand{\py@moreargs}{...}
+
+% This can be used when you don't want to document the parameters to a
+% function or method, but simply state that it's an alias for
+% something else.
+\newcommand{\py@unspecified}{...}
+
+\newcommand{\py@varvars}[1]{{%
+ {\let\unspecified=\py@unspecified%
+ \let\moreargs=\py@moreargs%
+ \emph{#1}}}}
+
+\newlength{\py@argswidth}
+\newcommand{\py@sigparams}[1]{%
+ \parbox[t]{\py@argswidth}{\py@varvars{#1}\code{)}}}
+\newcommand{\py@sigline}[2]{%
+ \settowidth{\py@argswidth}{#1\code{(}}%
+ \addtolength{\py@argswidth}{-2\py@argswidth}%
+ \addtolength{\py@argswidth}{\textwidth}%
+ \item[#1\code{(}\py@sigparams{#2}]}
+
+% C functions ------------------------------------------------------------
+% \begin{cfuncdesc}[refcount]{type}{name}{arglist}
+% Note that the [refcount] slot should only be filled in by
+% tools/anno-api.py; it pulls the value from the refcounts database.
+\newcommand{\cfuncline}[3]{
+ \py@sigline{\code{#1 \bfcode{#2}}}{#3}%
+}
+\newenvironment{cfuncdesc}[3]{
+ \begin{fulllineitems}
+ \cfuncline{#1}{#2}{#3}
+}{\end{fulllineitems}}
+
+% C variables ------------------------------------------------------------
+% \begin{cvardesc}{type}{name}
+\newenvironment{cvardesc}[2]{
+ \begin{fulllineitems}
+ \item[\code{#1 \bfcode{#2}}]
+}{\end{fulllineitems}}
+
+% C data types -----------------------------------------------------------
+% \begin{ctypedesc}[index name]{typedef name}
+\newenvironment{ctypedesc}[2][\py@badkey]{
+ \begin{fulllineitems}
+ \item[\bfcode{#2}]
+}{\end{fulllineitems}}
+
+% C type fields ----------------------------------------------------------
+% \begin{cmemberdesc}{container type}{ctype}{membername}
+\newcommand{\cmemberline}[3]{
+ \item[\code{#2 \bfcode{#3}}]
+}
+\newenvironment{cmemberdesc}[3]{
+ \begin{fulllineitems}
+ \cmemberline{#1}{#2}{#3}
+}{\end{fulllineitems}}
+
+% Funky macros -----------------------------------------------------------
+% \begin{csimplemacrodesc}{name}
+% -- "simple" because it has no args; NOT for constant definitions!
+\newenvironment{csimplemacrodesc}[1]{
+ \begin{fulllineitems}
+ \item[\bfcode{#1}]
+}{\end{fulllineitems}}
+
+% simple functions (not methods) -----------------------------------------
+% \begin{funcdesc}{name}{args}
+\newcommand{\funcline}[2]{%
+ \py@sigline{\bfcode{#1}}{#2}}
+\newenvironment{funcdesc}[2]{
+ \begin{fulllineitems}
+ \funcline{#1}{#2}
+}{\end{fulllineitems}}
+
+% classes ----------------------------------------------------------------
+% \begin{classdesc}{name}{constructor args}
+\newcommand{\classline}[2]{
+ \py@sigline{\strong{class }\bfcode{#1}}{#2}}
+\newenvironment{classdesc}[2]{
+ % Using \renewcommand doesn't work for this, for unknown reasons:
+ \global\def\py@thisclass{#1}
+ \begin{fulllineitems}
+ \classline{#1}{#2}
+}{\end{fulllineitems}}
+
+% \begin{excclassdesc}{name}{constructor args}
+% but indexes as an exception
+\newenvironment{excclassdesc}[2]{
+ % Using \renewcommand doesn't work for this, for unknown reasons:
+ \global\def\py@thisclass{#1}
+ \begin{fulllineitems}
+ \py@sigline{\strong{exception }\bfcode{#1}}{#2}%
+}{\end{fulllineitems}}
+
+% There is no corresponding {excclassdesc*} environment. To describe
+% a class exception without parameters, use the {excdesc} environment.
+
+
+\let\py@classbadkey=\@undefined
+
+% object method ----------------------------------------------------------
+% \begin{methoddesc}[classname]{methodname}{args}
+\newcommand{\methodline}[3][\@undefined]{
+ \py@sigline{\bfcode{#2}}{#3}}
+\newenvironment{methoddesc}[3][\@undefined]{
+ \begin{fulllineitems}
+ \ifx\@undefined#1\relax
+ \methodline{#2}{#3}
+ \else
+ \def\py@thisclass{#1}
+ \methodline{#2}{#3}
+ \fi
+}{\end{fulllineitems}}
+
+% static method ----------------------------------------------------------
+% \begin{staticmethoddesc}[classname]{methodname}{args}
+\newcommand{\staticmethodline}[3][\@undefined]{
+ \py@sigline{static \bfcode{#2}}{#3}}
+\newenvironment{staticmethoddesc}[3][\@undefined]{
+ \begin{fulllineitems}
+ \ifx\@undefined#1\relax
+ \staticmethodline{#2}{#3}
+ \else
+ \def\py@thisclass{#1}
+ \staticmethodline{#2}{#3}
+ \fi
+}{\end{fulllineitems}}
+
+% object data attribute --------------------------------------------------
+% \begin{memberdesc}[classname]{membername}
+\newcommand{\memberline}[2][\py@classbadkey]{%
+ \ifx\@undefined#1\relax
+ \item[\bfcode{#2}]
+ \else
+ \item[\bfcode{#2}]
+ \fi
+}
+\newenvironment{memberdesc}[2][\py@classbadkey]{
+ \begin{fulllineitems}
+ \ifx\@undefined#1\relax
+ \memberline{#2}
+ \else
+ \def\py@thisclass{#1}
+ \memberline{#2}
+ \fi
+}{\end{fulllineitems}}
+
+% For exceptions: --------------------------------------------------------
+% \begin{excdesc}{name}
+% -- for constructor information, use excclassdesc instead
+\newenvironment{excdesc}[1]{
+ \begin{fulllineitems}
+ \item[\strong{exception }\bfcode{#1}]
+}{\end{fulllineitems}}
+
+% Module data or constants: ----------------------------------------------
+% \begin{datadesc}{name}
+\newcommand{\dataline}[1]{%
+ \item[\bfcode{#1}]\nopagebreak}
+\newenvironment{datadesc}[1]{
+ \begin{fulllineitems}
+ \dataline{#1}
+}{\end{fulllineitems}}
+
+% bytecode instruction ---------------------------------------------------
+% \begin{opcodedesc}{name}{var}
+% -- {var} may be {}
+\newenvironment{opcodedesc}[2]{
+ \begin{fulllineitems}
+ \item[\bfcode{#1}\quad\emph{#2}]
+}{\end{fulllineitems}}
+
+% generic description ----------------------------------------------------
+\newcommand{\descline}[1]{%
+ \item[\bfcode{#1}]\nopagebreak%
+}
+\newenvironment{describe}[1]{
+ \begin{fulllineitems}
+ \descline{#1}
+}{\end{fulllineitems}}
+
+% This version is being checked in for the historical record; it shows
+% how I've managed to get some aspects of this to work. It will not
+% be used in practice, so a subsequent revision will change things
+% again. This version has problems, but shows how to do something
+% that proved more tedious than I'd expected, so I don't want to lose
+% the example completely.
+%
+\newcommand{\grammartoken}[1]{\texttt{#1}}
+\newenvironment{productionlist}[1][\py@badkey]{
+ \def\optional##1{{\Large[}##1{\Large]}}
+ \def\production##1##2{\code{##1}&::=&\code{##2}\\}
+ \def\productioncont##1{& &\code{##1}\\}
+ \def\token##1{##1}
+ \let\grammartoken=\token
+ \parindent=2em
+ \indent
+ \begin{tabular}{lcl}
+}{%
+ \end{tabular}
+}
+
+% Notices / Admonitions
+%
+\newlength{\py@noticelength}
+
+\newcommand{\py@heavybox}{
+ \setlength{\fboxrule}{1pt}
+ \setlength{\fboxsep}{7pt}
+ \setlength{\py@noticelength}{\linewidth}
+ \addtolength{\py@noticelength}{-2\fboxsep}
+ \addtolength{\py@noticelength}{-2\fboxrule}
+ \setlength{\shadowsize}{3pt}
+ \Sbox
+ \minipage{\py@noticelength}
+}
+\newcommand{\py@endheavybox}{
+ \endminipage
+ \endSbox
+ \fbox{\TheSbox}
+}
+
+% Some are quite plain:
+\newcommand{\py@noticestart@note}{}
+\newcommand{\py@noticeend@note}{}
+\newcommand{\py@noticestart@hint}{}
+\newcommand{\py@noticeend@hint}{}
+\newcommand{\py@noticestart@important}{}
+\newcommand{\py@noticeend@important}{}
+\newcommand{\py@noticestart@tip}{}
+\newcommand{\py@noticeend@tip}{}
+
+% Others gets more visible distinction:
+\newcommand{\py@noticestart@warning}{\py@heavybox}
+\newcommand{\py@noticeend@warning}{\py@endheavybox}
+\newcommand{\py@noticestart@caution}{\py@heavybox}
+\newcommand{\py@noticeend@caution}{\py@endheavybox}
+\newcommand{\py@noticestart@attention}{\py@heavybox}
+\newcommand{\py@noticeend@attention}{\py@endheavybox}
+\newcommand{\py@noticestart@danger}{\py@heavybox}
+\newcommand{\py@noticeend@danger}{\py@endheavybox}
+\newcommand{\py@noticestart@error}{\py@heavybox}
+\newcommand{\py@noticeend@error}{\py@endheavybox}
+
+\newenvironment{notice}[2]{
+ \def\py@noticetype{#1}
+ \csname py@noticestart@#1\endcsname
+ \par\strong{#2}
+}{\csname py@noticeend@\py@noticetype\endcsname}
+
+% Allow the release number to be specified independently of the
+% \date{}. This allows the date to reflect the document's date and
+% release to specify the release that is documented.
+%
+\newcommand{\py@release}{}
+\newcommand{\version}{}
+\newcommand{\shortversion}{}
+\newcommand{\releaseinfo}{}
+\newcommand{\releasename}{Release}
+\newcommand{\release}[1]{%
+ \renewcommand{\py@release}{\releasename\space\version}%
+ \renewcommand{\version}{#1}}
+\newcommand{\setshortversion}[1]{%
+ \renewcommand{\shortversion}{#1}}
+\newcommand{\setreleaseinfo}[1]{%
+ \renewcommand{\releaseinfo}{#1}}
+
+% Allow specification of the author's address separately from the
+% author's name. This can be used to format them differently, which
+% is a good thing.
+%
+\newcommand{\py@authoraddress}{}
+\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}}
+
+% This sets up the fancy chapter headings that make the documents look
+% at least a little better than the usual LaTeX output.
+%
+\@ifundefined{ChTitleVar}{}{
+ \ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
+ \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
+ \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily}
+ % This creates chapter heads without the leading \vspace*{}:
+ \def\@makechapterhead#1{%
+ {\parindent \z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \DOCH
+ \fi
+ \interlinepenalty\@M
+ \DOTI{#1}
+ }
+ }
+}
+
+% Redefine description environment so that it is usable inside fulllineitems.
+%
+\renewcommand{\description}{%
+ \list{}{\labelwidth\z@%
+ \itemindent-\leftmargin%
+ \labelsep5pt%
+ \let\makelabel=\descriptionlabel}}
+
+% Definition lists; requested by AMK for HOWTO documents. Probably useful
+% elsewhere as well, so keep in in the general style support.
+%
+\newenvironment{definitions}{%
+ \begin{description}%
+ \def\term##1{\item[##1]\mbox{}\\*[0mm]}
+}{%
+ \end{description}%
+}
+
+% Tell TeX about pathological hyphenation cases:
+\hyphenation{Base-HTTP-Re-quest-Hand-ler}
+
+
+% The following is stuff copied from docutils' latex writer.
+%
+\newcommand{\optionlistlabel}[1]{\bf #1 \hfill}
+\newenvironment{optionlist}[1]
+{\begin{list}{}
+ {\setlength{\labelwidth}{#1}
+ \setlength{\rightmargin}{1cm}
+ \setlength{\leftmargin}{\rightmargin}
+ \addtolength{\leftmargin}{\labelwidth}
+ \addtolength{\leftmargin}{\labelsep}
+ \renewcommand{\makelabel}{\optionlistlabel}}
+}{\end{list}}
+
+\newlength{\lineblockindentation}
+\setlength{\lineblockindentation}{2.5em}
+\newenvironment{lineblock}[1]
+{\begin{list}{}
+ {\setlength{\partopsep}{\parskip}
+ \addtolength{\partopsep}{\baselineskip}
+ \topsep0pt\itemsep0.15\baselineskip\parsep0pt
+ \leftmargin#1}
+ \raggedright}
+{\end{list}}
+
+% Redefine includgraphics for avoiding images larger than the screen size
+% If the size is not specified.
+\let\py@Oldincludegraphics\includegraphics
+
+\newbox\image@box%
+\newdimen\image@width%
+\renewcommand\includegraphics[2][\@empty]{%
+ \ifx#1\@empty%
+ \setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}%
+ \image@width\wd\image@box%
+ \ifdim \image@width>\linewidth%
+ \setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}%
+ \fi%
+ \box\image@box%
+ \else%
+ \py@Oldincludegraphics[#1]{#2}%
+ \fi%
+}
+
+
+% Fix the index and bibliography environments to add an entry to the Table of
+% Contents; this is much nicer than just having to jump to the end of the book
+% and flip around, especially with multiple indexes.
+%
+\let\py@OldTheindex=\theindex
+\renewcommand{\theindex}{
+ \cleardoublepage
+ \phantomsection
+ \py@OldTheindex
+ \addcontentsline{toc}{chapter}{\indexname}
+}
+
+\let\py@OldThebibliography=\thebibliography
+\renewcommand{\thebibliography}[1]{
+ \cleardoublepage
+ \phantomsection
+ \py@OldThebibliography{1}
+ \addcontentsline{toc}{chapter}{\bibname}
+}
+
+% Include hyperref last.
+\RequirePackage[colorlinks,breaklinks,
+ linkcolor=InnerLinkColor,filecolor=OuterLinkColor,
+ menucolor=OuterLinkColor,pagecolor=OuterLinkColor,
+ urlcolor=OuterLinkColor]{hyperref}
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/tabulary.sty
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/texinputs/tabulary.sty Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,449 @@
+%%
+%% This is file `tabulary.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tabulary.dtx (with options: `package')
+%% DRAFT VERSION
+%%
+%% File `tabulary.dtx'.
+%% Copyright (C) 1995 1996 2003 David Carlisle
+%% This file may be distributed under the terms of the LPPL.
+%% See 00readme.txt for details.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tabulary}
+ [2007/10/02 v0.9 tabulary package (DPC)]
+\RequirePackage{array}
+\catcode`\Z=14
+\DeclareOption{debugshow}{\catcode`\Z=9\relax}
+\ProcessOptions
+\def\arraybackslash{\let\\=\@arraycr}
+\def\@finalstrut#1{%
+ \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
+\newcount\TY@count
+\def\tabulary{%
+ \let\TY@final\tabular
+ \let\endTY@final\endtabular
+ \TY@tabular}
+\def\TY@tabular#1{%
+ \edef\TY@{\@currenvir}%
+ {\ifnum0=`}\fi
+ \@ovxx\TY@linewidth
+ \@ovyy\TY@tablewidth
+ \count@\z@
+ \@tempswatrue
+ \@whilesw\if@tempswa\fi{%
+ \advance\count@\@ne
+ \expandafter\ifx\csname TY@F\the\count@\endcsname\relax
+ \@tempswafalse
+ \else
+ \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname
+ \csname TY@F\the\count@\endcsname
+ \global\expandafter\let\csname TY@F\the\count@\endcsname\relax
+ \expandafter\let\csname TY@S\the\count@\expandafter\endcsname
+ \csname TY@\the\count@\endcsname
+ \fi}%
+ \global\TY@count\@ne
+ \TY@width\xdef{0pt}%
+ \global\TY@tablewidth\z@
+ \global\TY@linewidth#1\relax
+Z\message{^^J^^JTable^^J%
+Z Target Width: \the\TY@linewidth^^J%
+Z \string\tabcolsep: \the\tabcolsep\space
+Z \string\arrayrulewidth: \the\arrayrulewidth\space
+Z \string\doublerulesep: \the\doublerulesep^^J%
+Z \string\tymin: \the\tymin\space
+Z \string\tymax: \the\tymax^^J}%
+ \let\@classz\TY@classz
+ \let\verb\TX@verb
+ \toks@{}\TY@get@body}
+\let\TY@@mkpream\@mkpream
+\def\TY@mkpream{%
+ \def\@addamp{%
+ \if@firstamp \@firstampfalse \else
+ \global\advance\TY@count\@ne
+ \edef\@preamble{\@preamble &}\fi
+ \TY@width\xdef{0pt}}%
+ \def\@acol{%
+ \TY@subwidth\col@sep
+ \@addtopreamble{\hskip\col@sep}}%
+ \let\@arrayrule\TY@arrayrule
+ \let\@classvi\TY@classvi
+ \def\@classv{\save@decl
+ \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ \sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
+ \TY@subwidth{\wd\z@}%
+ \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
+ \prepnext@tok}%
+ \global\let\@mkpream\TY@@mkpream
+ \TY@@mkpream}
+\def\TY@arrayrule{%
+ \TY@subwidth\arrayrulewidth
+ \@addtopreamble \vline}
+\def\TY@classvi{\ifcase \@lastchclass
+ \@acol \or
+ \TY@subwidth\doublerulesep
+ \@addtopreamble{\hskip \doublerulesep}\or
+ \@acol \or
+ \@classvii
+ \fi}
+\def\TY@tab{%
+ \setbox\z@\hbox\bgroup
+ \let\[$\let\]$%
+ \let\equation$\let\endequation$%
+ \col@sep\tabcolsep
+ \let\d@llarbegin\begingroup\let\d@llarend\endgroup
+ \let\@mkpream\TY@mkpream
+ \def\multicolumn##1##2##3{\multispan##1\relax}%
+ \CT@start\TY@tabarray}
+\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}}
+\def\TY@array[#1]{\@array[t]}
+\def\TY@width#1{%
+ \expandafter#1\csname TY@\the\TY@count\endcsname}
+\def\TY@subwidth#1{%
+ \TY@width\dimen@
+ \advance\dimen@-#1\relax
+ \TY@width\xdef{\the\dimen@}%
+ \global\advance\TY@linewidth-#1\relax}
+\def\endtabulary{%
+ \gdef\@halignto{}%
+ \expandafter\TY@tab\the\toks@
+ \crcr\omit
+ {\xdef\TY@save@row{}%
+ \loop
+ \advance\TY@count\m@ne
+ \ifnum\TY@count>\z@
+ \xdef\TY@save@row{\TY@save@row&\omit}%
+ \repeat}\TY@save@row
+ \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
+ \unskip\global\setbox1=\lastbox}\egroup
+ \dimen@\TY@linewidth
+ \divide\dimen@\TY@count
+ \ifdim\dimen@<\tymin
+ \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}%
+ \tymin\dimen@
+ \fi
+ \setbox\tw@=\hbox{\unhbox\@ne
+ \loop
+\@tempdima=\lastskip
+\ifdim\@tempdima>\z@
+Z \message{ecs=\the\@tempdima^^J}%
+ \global\advance\TY@linewidth-\@tempdima
+\fi
+ \unskip
+ \setbox\tw@=\lastbox
+ \ifhbox\tw@
+Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}%
+ \ifdim\wd\tw@>\tymax
+ \wd\tw@\tymax
+Z \message{> max\space}%
+Z \else
+Z \message{ \@spaces\space}%
+ \fi
+ \TY@width\dimen@
+Z \message{\the\dimen@\space}%
+ \advance\dimen@\wd\tw@
+Z \message{Final=\the\dimen@\space}%
+ \TY@width\xdef{\the\dimen@}%
+ \ifdim\dimen@<\tymin
+Z \message{< tymin}%
+ \global\advance\TY@linewidth-\dimen@
+ \expandafter\xdef\csname TY@F\the\TY@count\endcsname
+ {\the\dimen@}%
+ \else
+ \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@
+Z \message{***}%
+ \global\advance\TY@linewidth-\dimen@
+ \expandafter\xdef\csname TY@F\the\TY@count\endcsname
+ {\the\dimen@}%
+ \else
+Z \message{> tymin}%
+ \global\advance\TY@tablewidth\dimen@
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname
+ \maxdimen
+ \fi\fi
+ \advance\TY@count\m@ne
+ \repeat}%
+ \TY@checkmin
+ \TY@checkmin
+ \TY@checkmin
+ \TY@checkmin
+ \TY@count\z@
+ \let\TY@box\TY@box@v
+ {\expandafter\TY@final\the\toks@\endTY@final}%
+ \count@\z@
+ \@tempswatrue
+ \@whilesw\if@tempswa\fi{%
+ \advance\count@\@ne
+ \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax
+ \@tempswafalse
+ \else
+ \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname
+ \csname TY@SF\the\count@\endcsname
+ \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname
+ \csname TY@S\the\count@\endcsname
+ \fi}%
+ \TY@linewidth\@ovxx
+ \TY@tablewidth\@ovyy
+ \ifnum0=`{\fi}}
+\def\TY@checkmin{%
+ \let\TY@checkmin\relax
+\ifdim\TY@tablewidth>\z@
+ \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth
+ \ifdim\TY@tablewidth <\linewidth
+ \def\TY@ratio{1}%
+ \fi
+\else
+ \TY@warn{No suitable columns!}%
+ \def\TY@ratio{1}%
+\fi
+\count@\z@
+Z \message{^^JLine Width: \the\TY@linewidth,
+Z Natural Width: \the\TY@tablewidth,
+Z Ratio: \TY@ratio^^J}%
+\@tempdima\z@
+\loop
+\ifnum\count@<\TY@count
+\advance\count@\@ne
+ \ifdim\csname TY@F\the\count@\endcsname>\tymin
+ \dimen@\csname TY@\the\count@\endcsname
+ \dimen@\TY@ratio\dimen@
+ \ifdim\dimen@<\tymin
+Z \message{Column \the\count@\space ->}%
+ \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin
+ \global\advance\TY@linewidth-\tymin
+ \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname
+ \let\TY@checkmin\TY@@checkmin
+ \else
+ \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}%
+ \advance\@tempdima\csname TY@F\the\count@\endcsname
+ \fi
+ \fi
+Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }%
+\repeat
+Z \message{^^JTotal:\the\@tempdima^^J}%
+}
+\let\TY@@checkmin\TY@checkmin
+\newdimen\TY@linewidth
+\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}}
+\newdimen\tymin
+\tymin=10pt
+\newdimen\tymax
+\tymax=2\textwidth
+\def\@testpach{\@chclass
+ \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ \ifnum \@lastchclass=7 5 \else
+ \ifnum \@lastchclass=8 \tw@ \else
+ \ifnum \@lastchclass=9 \thr@@
+ \else \z@
+ \ifnum \@lastchclass = 10 \else
+ \edef\@nextchar{\expandafter\string\@nextchar}%
+ \@chnum
+ \if \@nextchar c\z@ \else
+ \if \@nextchar l\@ne \else
+ \if \@nextchar r\tw@ \else
+ \if \@nextchar C7 \else
+ \if \@nextchar L8 \else
+ \if \@nextchar R9 \else
+ \if \@nextchar J10 \else
+ \z@ \@chclass
+ \if\@nextchar |\@ne \else
+ \if \@nextchar !6 \else
+ \if \@nextchar @7 \else
+ \if \@nextchar <8 \else
+ \if \@nextchar >9 \else
+ 10
+ \@chnum
+ \if \@nextchar m\thr@@\else
+ \if \@nextchar p4 \else
+ \if \@nextchar b5 \else
+ \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
+\def\TY@classz{%
+ \@classx
+ \@tempcnta\count@
+ \ifx\TY@box\TY@box@v
+ \global\advance\TY@count\@ne
+ \fi
+ \let\centering c%
+ \let\raggedright\noindent
+ \let\raggedleft\indent
+ \let\arraybackslash\relax
+ \prepnext@tok
+ \ifnum\@chnum<4
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \ifnum\@chnum=6
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \@addtopreamble{%
+ \ifcase\@chnum
+ \hfil \d@llarbegin\insert@column\d@llarend \hfil \or
+ \kern\z@
+ \d@llarbegin \insert@column \d@llarend \hfil \or
+ \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
+ $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \d@llarbegin \insert@column \d@llarend \or% dubious "s" case
+ \TY@box\centering\or
+ \TY@box\raggedright\or
+ \TY@box\raggedleft\or
+ \TY@box\relax
+ \fi}\prepnext@tok}
+\def\TY@box#1{%
+ \ifx\centering#1%
+ \hfil \d@llarbegin\insert@column\d@llarend \hfil \else
+ \ifx\raggedright#1%
+ \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \d@llarbegin \insert@column \d@llarend \hfil \else
+ \ifx\raggedleft#1%
+ \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
+ \ifx\relax#1%
+ \d@llarbegin \insert@column \d@llarend
+ \fi \fi \fi \fi}
+\def\TY@box@v#1{%
+ \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
+ #1\arraybackslash\tyformat
+ \insert@column\@endpbox}
+\newdimen\TY@tablewidth
+\def\Gscale@div#1#2#3{%
+ \setlength\dimen@{#3}%
+ \ifdim\dimen@=\z@
+ \PackageError{graphics}{Division by 0}\@eha
+ \dimen@#2%
+ \fi
+ \edef\@tempd{\the\dimen@}%
+ \setlength\dimen@{#2}%
+ \count@65536\relax
+ \ifdim\dimen@<\z@
+ \dimen@-\dimen@
+ \count@-\count@
+ \fi
+ \loop
+ \ifdim\dimen@<8192\p@
+ \dimen@\tw@\dimen@
+ \divide\count@\tw@
+ \repeat
+ \dimen@ii=\@tempd\relax
+ \divide\dimen@ii\count@
+ \divide\dimen@\dimen@ii
+ \edef#1{\strip@pt\dimen@}}
+\long\def\TY@get@body#1\end
+ {\toks@\expandafter{\the\toks@#1}\TY@find@end}
+\def\TY@find@end#1{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa
+ \else\toks@\expandafter
+ {\the\toks@\end{#1}}\expandafter\TY@get@body\fi}
+\def\TY@warn{%
+ \PackageWarning{tabulary}}
+\catcode`\Z=11
+\AtBeginDocument{
+\@ifpackageloaded{colortbl}{%
+\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1%
+ \expandafter{%
+ \expandafter\let\expandafter\CT@setup\expandafter\relax
+ \expandafter\let\expandafter\CT@color\expandafter\relax
+ \expandafter\let\expandafter\CT@do@color\expandafter\relax
+ \expandafter\let\expandafter\color\expandafter\relax
+ \expandafter\let\expandafter\CT@column@color\expandafter\relax
+ \expandafter\let\expandafter\CT@row@color\expandafter\relax
+ \@mkpream{#1}}
+\let\TY@@mkpream\@mkpream
+\def\TY@classz{%
+ \@classx
+ \@tempcnta\count@
+ \ifx\TY@box\TY@box@v
+ \global\advance\TY@count\@ne
+ \fi
+ \let\centering c%
+ \let\raggedright\noindent
+ \let\raggedleft\indent
+ \let\arraybackslash\relax
+ \prepnext@tok
+\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
+ \ifnum\@chnum<4
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \ifnum\@chnum=6
+ \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
+ \fi
+ \@addtopreamble{%
+ \setbox\z@\hbox\bgroup\bgroup
+ \ifcase\@chnum
+ \hskip\stretch{.5}\kern\z@
+ \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or
+ \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ \d@llarbegin \insert@column \d@llarend \hfill \or
+ \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
+ $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
+ \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
+ \d@llarbegin \insert@column \d@llarend \or% dubious s case
+ \TY@box\centering\or
+ \TY@box\raggedright\or
+ \TY@box\raggedleft\or
+ \TY@box\relax
+ \fi
+ \egroup\egroup
+\begingroup
+ \CT@setup
+ \CT@column@color
+ \CT@row@color
+ \CT@do@color
+\endgroup
+ \@tempdima\ht\z@
+ \advance\@tempdima\minrowclearance
+ \vrule\@height\@tempdima\@width\z@
+\unhbox\z@
+}\prepnext@tok}%
+ \def\TY@arrayrule{%
+ \TY@subwidth\arrayrulewidth
+ \@addtopreamble{{\CT@arc@\vline}}}%
+ \def\TY@classvi{\ifcase \@lastchclass
+ \@acol \or
+ \TY@subwidth\doublerulesep
+ \ifx\CT@drsc@\relax
+ \@addtopreamble{\hskip\doublerulesep}%
+ \else
+ \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}%
+ \fi\or
+ \@acol \or
+ \@classvii
+ \fi}%
+}{%
+\let\CT@start\relax
+}
+}
+{\uccode`\*=`\ %
+\uppercase{\gdef\TX@verb{%
+ \leavevmode\null\TX@vwarn
+ {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
+ \@ifstar{\let~*\TX@vb}{\TX@vb}}}}
+\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
+ \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
+\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= }
+\begingroup
+\catcode`\*=\catcode`\#
+\catcode`\#=12
+\gdef\TX@vfirst{%
+ \if\@tempa#%
+ \def\@tempb{\TX@v@#}%
+ \else
+ \let\@tempb\TX@v@
+ \if\@tempa\space~\else\@tempa\fi
+ \fi
+ \@tempb}
+\gdef\TX@v@*1 *2{%
+ \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2}
+\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2}
+\endgroup
+\def\TX@vwarn{%
+ \@warning{\noexpand\verb may be unreliable inside tabularx/y}%
+ \global\let\TX@vwarn\@empty}
+\endinput
+%%
+%% End of file `tabulary.sty'.
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/textwriter.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/textwriter.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,679 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.textwriter
+ ~~~~~~~~~~~~~~~~~
+
+ Custom docutils writer for plain text.
+
+ :copyright: 2008 by Georg Brandl.
+ :license: BSD.
+"""
+
+import re
+import textwrap
+
+from docutils import nodes, writers
+
+from sphinx import addnodes
+from sphinx.locale import admonitionlabels, versionlabels
+
+
+class TextWriter(writers.Writer):
+ supported = ('text',)
+ settings_spec = ('No options here.', '', ())
+ settings_defaults = {}
+
+ output = None
+
+ def __init__(self, builder):
+ writers.Writer.__init__(self)
+ self.builder = builder
+
+ def translate(self):
+ visitor = TextTranslator(self.document, self.builder)
+ self.document.walkabout(visitor)
+ self.output = visitor.body
+
+# monkey-patch...
+new_wordsep_re = re.compile(
+ r'(\s+|' # any whitespace
+ r'(?<=\s)(?::[a-z-]+:)?`\S+|' # interpreted text start
+ r'[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|' # hyphenated words
+ r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
+textwrap.TextWrapper.wordsep_re = new_wordsep_re
+
+MAXWIDTH = 70
+STDINDENT = 3
+
+
+class TextTranslator(nodes.NodeVisitor):
+ sectionchars = '*=-~"+'
+
+ def __init__(self, document, builder):
+ nodes.NodeVisitor.__init__(self, document)
+
+ self.states = [[]]
+ self.stateindent = [0]
+ self.sectionlevel = 0
+ self.table = None
+
+ def add_text(self, text):
+ self.states[-1].append((-1, text))
+ def new_state(self, indent=STDINDENT):
+ self.states.append([])
+ self.stateindent.append(indent)
+ def end_state(self, wrap=True, end=[''], first=None):
+ content = self.states.pop()
+ maxindent = sum(self.stateindent)
+ indent = self.stateindent.pop()
+ result = []
+ toformat = []
+ def do_format():
+ if not toformat:
+ return
+ if wrap:
+ res = textwrap.wrap(''.join(toformat), width=MAXWIDTH-maxindent)
+ else:
+ res = ''.join(toformat).splitlines()
+ if end:
+ res += end
+ result.append((indent, res))
+ for itemindent, item in content:
+ if itemindent == -1:
+ toformat.append(item)
+ else:
+ do_format()
+ result.append((indent + itemindent, item))
+ toformat = []
+ do_format()
+ if first is not None and result:
+ itemindent, item = result[0]
+ if item:
+ result.insert(0, (itemindent - indent, [first + item[0]]))
+ result[1] = (itemindent, item[1:])
+ self.states[-1].extend(result)
+
+ def visit_document(self, node):
+ self.new_state(0)
+ def depart_document(self, node):
+ self.end_state()
+ self.body = '\n'.join(line and (' '*indent + line)
+ for indent, lines in self.states[0]
+ for line in lines)
+ # XXX header/footer?
+
+ def visit_highlightlang(self, node):
+ raise nodes.SkipNode
+
+ def visit_section(self, node):
+ self._title_char = self.sectionchars[self.sectionlevel]
+ self.sectionlevel += 1
+ def depart_section(self, node):
+ self.sectionlevel -= 1
+
+ def visit_topic(self, node):
+ self.new_state(0)
+ def depart_topic(self, node):
+ self.end_state()
+
+ visit_sidebar = visit_topic
+ depart_sidebar = depart_topic
+
+ def visit_rubric(self, node):
+ self.new_state(0)
+ self.add_text('-[ ')
+ def depart_rubric(self, node):
+ self.add_text(' ]-')
+ self.end_state()
+
+ def visit_compound(self, node):
+ pass
+ def depart_compound(self, node):
+ pass
+
+ def visit_glossary(self, node):
+ pass
+ def depart_glossary(self, node):
+ pass
+
+ def visit_title(self, node):
+ if isinstance(node.parent, nodes.Admonition):
+ self.add_text(node.astext()+': ')
+ raise nodes.SkipNode
+ self.new_state(0)
+ def depart_title(self, node):
+ if isinstance(node.parent, nodes.section):
+ char = self._title_char
+ else:
+ char = '^'
+ text = ''.join(x[1] for x in self.states.pop() if x[0] == -1)
+ self.stateindent.pop()
+ self.states[-1].append((0, ['', text, '%s' % (char * len(text)), '']))
+
+ def visit_subtitle(self, node):
+ pass
+ def depart_subtitle(self, node):
+ pass
+
+ def visit_attribution(self, node):
+ self.add_text('-- ')
+ def depart_attribution(self, node):
+ pass
+
+ def visit_module(self, node):
+ if node.has_key('platform'):
+ self.new_state(0)
+ self.add_text(_('Platform: %s') % node['platform'])
+ self.end_state()
+ raise nodes.SkipNode
+
+ def visit_desc(self, node):
+ pass
+ def depart_desc(self, node):
+ pass
+
+ def visit_desc_signature(self, node):
+ self.new_state(0)
+ if node.parent['desctype'] in ('class', 'exception'):
+ self.add_text('%s ' % node.parent['desctype'])
+ def depart_desc_signature(self, node):
+ # XXX: wrap signatures in a way that makes sense
+ self.end_state(wrap=False, end=None)
+
+ def visit_desc_name(self, node):
+ pass
+ def depart_desc_name(self, node):
+ pass
+
+ def visit_desc_addname(self, node):
+ pass
+ def depart_desc_addname(self, node):
+ pass
+
+ def visit_desc_type(self, node):
+ pass
+ def depart_desc_type(self, node):
+ pass
+
+ def visit_desc_parameterlist(self, node):
+ self.add_text('(')
+ self.first_param = 1
+ def depart_desc_parameterlist(self, node):
+ self.add_text(')')
+
+ def visit_desc_parameter(self, node):
+ if not self.first_param:
+ self.add_text(', ')
+ else:
+ self.first_param = 0
+ self.add_text(node.astext())
+ raise nodes.SkipNode
+
+ def visit_desc_optional(self, node):
+ self.add_text('[')
+ def depart_desc_optional(self, node):
+ self.add_text(']')
+
+ def visit_desc_annotation(self, node):
+ pass
+ def depart_desc_annotation(self, node):
+ pass
+
+ def visit_refcount(self, node):
+ pass
+ def depart_refcount(self, node):
+ pass
+
+ def visit_desc_content(self, node):
+ self.new_state()
+ self.add_text('\n')
+ def depart_desc_content(self, node):
+ self.end_state()
+
+ def visit_figure(self, node):
+ self.new_state()
+ def depart_figure(self, node):
+ self.end_state()
+
+ def visit_caption(self, node):
+ pass
+ def depart_caption(self, node):
+ pass
+
+ def visit_productionlist(self, node):
+ self.new_state()
+ names = []
+ for production in node:
+ names.append(production['tokenname'])
+ maxlen = max(len(name) for name in names)
+ for production in node:
+ if production['tokenname']:
+ self.add_text(production['tokenname'].ljust(maxlen) + ' ::=')
+ lastname = production['tokenname']
+ else:
+ self.add_text('%s ' % (' '*len(lastname)))
+ self.add_text(production.astext() + '\n')
+ self.end_state(wrap=False)
+ raise nodes.SkipNode
+
+ def visit_seealso(self, node):
+ self.new_state()
+ def depart_seealso(self, node):
+ self.end_state(first='')
+
+ def visit_footnote(self, node):
+ self._footnote = node.children[0].astext().strip()
+ self.new_state(len(self._footnote) + 3)
+ def depart_footnote(self, node):
+ self.end_state(first='[%s] ' % self._footnote)
+
+ def visit_citation(self, node):
+ if len(node) and isinstance(node[0], nodes.label):
+ self._citlabel = node[0].astext()
+ else:
+ self._citlabel = ''
+ self.new_state(len(self._citlabel) + 3)
+ def depart_citation(self, node):
+ self.end_state(first='[%s] ' % self._citlabel)
+
+ def visit_label(self, node):
+ raise nodes.SkipNode
+
+ # XXX: option list could use some better styling
+
+ def visit_option_list(self, node):
+ pass
+ def depart_option_list(self, node):
+ pass
+
+ def visit_option_list_item(self, node):
+ self.new_state(0)
+ def depart_option_list_item(self, node):
+ self.end_state()
+
+ def visit_option_group(self, node):
+ self._firstoption = True
+ def depart_option_group(self, node):
+ self.add_text(' ')
+
+ def visit_option(self, node):
+ if self._firstoption:
+ self._firstoption = False
+ else:
+ self.add_text(', ')
+ def depart_option(self, node):
+ pass
+
+ def visit_option_string(self, node):
+ pass
+ def depart_option_string(self, node):
+ pass
+
+ def visit_option_argument(self, node):
+ self.add_text(node['delimiter'])
+ def depart_option_argument(self, node):
+ pass
+
+ def visit_description(self, node):
+ pass
+ def depart_description(self, node):
+ pass
+
+ def visit_tabular_col_spec(self, node):
+ raise nodes.SkipNode
+
+ def visit_colspec(self, node):
+ self.table[0].append(node['colwidth'])
+ raise nodes.SkipNode
+
+ def visit_tgroup(self, node):
+ pass
+ def depart_tgroup(self, node):
+ pass
+
+ def visit_thead(self, node):
+ pass
+ def depart_thead(self, node):
+ pass
+
+ def visit_tbody(self, node):
+ self.table.append('sep')
+ def depart_tbody(self, node):
+ pass
+
+ def visit_row(self, node):
+ self.table.append([])
+ def depart_row(self, node):
+ pass
+
+ def visit_entry(self, node):
+ if node.has_key('morerows') or node.has_key('morecols'):
+ raise NotImplementedError('Column or row spanning cells are '
+ 'not implemented.')
+ self.new_state(0)
+ def depart_entry(self, node):
+ text = '\n'.join('\n'.join(x[1]) for x in self.states.pop())
+ self.stateindent.pop()
+ self.table[-1].append(text)
+
+ def visit_table(self, node):
+ if self.table:
+ raise NotImplementedError('Nested tables are not supported.')
+ self.new_state(0)
+ self.table = [[]]
+ def depart_table(self, node):
+ lines = self.table[1:]
+ fmted_rows = []
+ colwidths = self.table[0]
+ realwidths = colwidths[:]
+ separator = 0
+ # don't allow paragraphs in table cells for now
+ for line in lines:
+ if line == 'sep':
+ separator = len(fmted_rows)
+ else:
+ cells = []
+ for i, cell in enumerate(line):
+ par = textwrap.wrap(cell, width=colwidths[i])
+ if par:
+ maxwidth = max(map(len, par))
+ else:
+ maxwidth = 0
+ realwidths[i] = max(realwidths[i], maxwidth)
+ cells.append(par)
+ fmted_rows.append(cells)
+
+ def writesep(char='-'):
+ out = ['+']
+ for width in realwidths:
+ out.append(char * (width+2))
+ out.append('+')
+ self.add_text(''.join(out) + '\n')
+
+ def writerow(row):
+ lines = map(None, *row)
+ for line in lines:
+ out = ['|']
+ for i, cell in enumerate(line):
+ if cell:
+ out.append(' ' + cell.ljust(realwidths[i]+1))
+ else:
+ out.append(' ' * (realwidths[i] + 2))
+ out.append('|')
+ self.add_text(''.join(out) + '\n')
+
+ for i, row in enumerate(fmted_rows):
+ if separator and i == separator:
+ writesep('=')
+ else:
+ writesep('-')
+ writerow(row)
+ writesep('-')
+ self.table = None
+ self.end_state(wrap=False)
+
+ def visit_acks(self, node):
+ self.new_state(0)
+ self.add_text(', '.join(n.astext() for n in node.children[0].children) + '.')
+ self.end_state()
+ raise nodes.SkipNode
+
+ def visit_image(self, node):
+ self.add_text(_('[image]'))
+ raise nodes.SkipNode
+
+ def visit_transition(self, node):
+ indent = sum(self.stateindent)
+ self.new_state(0)
+ self.add_text('=' * (MAXWIDTH - indent))
+ self.end_state()
+ raise nodes.SkipNode
+
+ def visit_bullet_list(self, node):
+ self._list_counter = -1
+ def depart_bullet_list(self, node):
+ pass
+
+ def visit_enumerated_list(self, node):
+ self._list_counter = 0
+ def depart_enumerated_list(self, node):
+ pass
+
+ def visit_definition_list(self, node):
+ self._list_counter = -2
+ def depart_definition_list(self, node):
+ pass
+
+ def visit_list_item(self, node):
+ if self._list_counter == -1:
+ # bullet list
+ self.new_state(2)
+ elif self._list_counter == -2:
+ # definition list
+ pass
+ else:
+ # enumerated list
+ self._list_counter += 1
+ self.new_state(len(str(self._list_counter)) + 2)
+ def depart_list_item(self, node):
+ if self._list_counter == -1:
+ self.end_state(first='* ', end=None)
+ elif self._list_counter == -2:
+ pass
+ else:
+ self.end_state(first='%s. ' % self._list_counter, end=None)
+
+ def visit_definition_list_item(self, node):
+ self._li_has_classifier = len(node) >= 2 and \
+ isinstance(node[1], nodes.classifier)
+ def depart_definition_list_item(self, node):
+ pass
+
+ def visit_term(self, node):
+ self.new_state(0)
+ def depart_term(self, node):
+ if not self._li_has_classifier:
+ self.end_state(end=None)
+
+ def visit_classifier(self, node):
+ self.add_text(' : ')
+ def depart_classifier(self, node):
+ self.end_state(end=None)
+
+ def visit_definition(self, node):
+ self.new_state()
+ def depart_definition(self, node):
+ self.end_state()
+
+ def visit_field_list(self, node):
+ pass
+ def depart_field_list(self, node):
+ pass
+
+ def visit_field(self, node):
+ pass
+ def depart_field(self, node):
+ pass
+
+ def visit_field_name(self, node):
+ self.new_state(0)
+ def depart_field_name(self, node):
+ self.add_text(':')
+ self.end_state(end=None)
+
+ def visit_field_body(self, node):
+ self.new_state()
+ def depart_field_body(self, node):
+ self.end_state()
+
+ def visit_centered(self, node):
+ pass
+ def depart_centered(self, node):
+ pass
+
+ def visit_admonition(self, node):
+ self.new_state(0)
+ def depart_admonition(self, node):
+ self.end_state()
+
+ def _visit_admonition(self, node):
+ self.new_state(2)
+ def _make_depart_admonition(name):
+ def depart_admonition(self, node):
+ self.end_state(first=admonitionlabels[name] + ': ')
+ return depart_admonition
+
+ visit_attention = _visit_admonition
+ depart_attention = _make_depart_admonition('attention')
+ visit_caution = _visit_admonition
+ depart_caution = _make_depart_admonition('caution')
+ visit_danger = _visit_admonition
+ depart_danger = _make_depart_admonition('danger')
+ visit_error = _visit_admonition
+ depart_error = _make_depart_admonition('error')
+ visit_hint = _visit_admonition
+ depart_hint = _make_depart_admonition('hint')
+ visit_important = _visit_admonition
+ depart_important = _make_depart_admonition('important')
+ visit_note = _visit_admonition
+ depart_note = _make_depart_admonition('note')
+ visit_tip = _visit_admonition
+ depart_tip = _make_depart_admonition('tip')
+ visit_warning = _visit_admonition
+ depart_warning = _make_depart_admonition('warning')
+
+ def visit_versionmodified(self, node):
+ self.new_state(0)
+ if node.children:
+ self.add_text(versionlabels[node['type']] % node['version'] + ': ')
+ else:
+ self.add_text(versionlabels[node['type']] % node['version'] + '.')
+ def depart_versionmodified(self, node):
+ self.end_state()
+
+ def visit_literal_block(self, node):
+ self.new_state()
+ def depart_literal_block(self, node):
+ self.end_state(wrap=False)
+
+ def visit_doctest_block(self, node):
+ self.new_state(0)
+ def depart_doctest_block(self, node):
+ self.end_state(wrap=False)
+
+ def visit_line_block(self, node):
+ self.new_state(0)
+ def depart_line_block(self, node):
+ self.end_state(wrap=False)
+
+ def visit_line(self, node):
+ pass
+ def depart_line(self, node):
+ pass
+
+ def visit_block_quote(self, node):
+ self.new_state()
+ def depart_block_quote(self, node):
+ self.end_state()
+
+ def visit_compact_paragraph(self, node):
+ pass
+ def depart_compact_paragraph(self, node):
+ pass
+
+ def visit_paragraph(self, node):
+ if not isinstance(node.parent, nodes.Admonition) or \
+ isinstance(node.parent, addnodes.seealso):
+ self.new_state(0)
+ def depart_paragraph(self, node):
+ if not isinstance(node.parent, nodes.Admonition) or \
+ isinstance(node.parent, addnodes.seealso):
+ self.end_state()
+
+ def visit_target(self, node):
+ raise nodes.SkipNode
+
+ def visit_index(self, node):
+ raise nodes.SkipNode
+
+ def visit_substitution_definition(self, node):
+ raise nodes.SkipNode
+
+ def visit_pending_xref(self, node):
+ pass
+ def depart_pending_xref(self, node):
+ pass
+
+ def visit_reference(self, node):
+ pass
+ def depart_reference(self, node):
+ pass
+
+ def visit_emphasis(self, node):
+ self.add_text('*')
+ def depart_emphasis(self, node):
+ self.add_text('*')
+
+ def visit_literal_emphasis(self, node):
+ self.add_text('*')
+ def depart_literal_emphasis(self, node):
+ self.add_text('*')
+
+ def visit_strong(self, node):
+ self.add_text('**')
+ def depart_strong(self, node):
+ self.add_text('**')
+
+ def visit_title_reference(self, node):
+ self.add_text('*')
+ def depart_title_reference(self, node):
+ self.add_text('*')
+
+ def visit_literal(self, node):
+ self.add_text('``')
+ def depart_literal(self, node):
+ self.add_text('``')
+
+ def visit_subscript(self, node):
+ self.add_text('_')
+ def depart_subscript(self, node):
+ pass
+
+ def visit_superscript(self, node):
+ self.add_text('^')
+ def depart_superscript(self, node):
+ pass
+
+ def visit_footnote_reference(self, node):
+ self.add_text('[%s]' % node.astext())
+ raise nodes.SkipNode
+
+ def visit_citation_reference(self, node):
+ self.add_text('[%s]' % node.astext())
+ raise nodes.SkipNode
+
+ def visit_Text(self, node):
+ self.add_text(node.astext())
+ def depart_Text(self, node):
+ pass
+
+ def visit_problematic(self, node):
+ self.add_text('>>')
+ def depart_problematic(self, node):
+ self.add_text('<<')
+
+ def visit_system_message(self, node):
+ self.new_state(0)
+ self.add_text('' % node.astext())
+ self.end_state()
+ raise nodes.SkipNode
+
+ def visit_comment(self, node):
+ raise nodes.SkipNode
+
+ def visit_meta(self, node):
+ # only valid for HTML
+ raise nodes.SkipNode
+
+ def unknown_visit(self, node):
+ raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/__init__.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/__init__.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,284 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.util
+ ~~~~~~~~~~~
+
+ Utility functions for Sphinx.
+
+ :copyright: 2007-2008 by Georg Brandl.
+ :license: BSD.
+"""
+
+import os
+import re
+import sys
+import time
+import fnmatch
+import tempfile
+import traceback
+from os import path
+
+
+# Generally useful regular expressions.
+ws_re = re.compile(r'\s+')
+caption_ref_re = re.compile(r'^([^<]+?)\s*<(.+)>$')
+
+
+# SEP separates path elements in the canonical file names
+#
+# Define SEP as a manifest constant, not so much because we expect it to change
+# in the future as to avoid the suspicion that a stray "/" in the code is a
+# hangover from more *nix-oriented origins.
+SEP = "/"
+
+def os_path(canonicalpath):
+ return canonicalpath.replace(SEP, os.path.sep)
+
+
+def relative_uri(base, to):
+ """Return a relative URL from ``base`` to ``to``."""
+ b2 = base.split(SEP)
+ t2 = to.split(SEP)
+ # remove common segments
+ for x, y in zip(b2, t2):
+ if x != y:
+ break
+ b2.pop(0)
+ t2.pop(0)
+ return ('..' + SEP) * (len(b2)-1) + SEP.join(t2)
+
+
+def ensuredir(path):
+ """Ensure that a path exists."""
+ try:
+ os.makedirs(path)
+ except OSError, err:
+ if not err.errno == 17:
+ raise
+
+
+def walk(top, topdown=True, followlinks=False):
+ """
+ Backport of os.walk from 2.6, where the followlinks argument was added.
+ """
+ names = os.listdir(top)
+
+ dirs, nondirs = [], []
+ for name in names:
+ if path.isdir(path.join(top, name)):
+ dirs.append(name)
+ else:
+ nondirs.append(name)
+
+ if topdown:
+ yield top, dirs, nondirs
+ for name in dirs:
+ fullpath = path.join(top, name)
+ if followlinks or not path.islink(fullpath):
+ for x in walk(fullpath, topdown, followlinks):
+ yield x
+ if not topdown:
+ yield top, dirs, nondirs
+
+
+def get_matching_docs(dirname, suffix, exclude_docs=(), exclude_dirs=(),
+ exclude_trees=(), exclude_dirnames=()):
+ """
+ Get all file names (without suffix) matching a suffix in a
+ directory, recursively.
+
+ Exclude docs in *exclude_docs*, exclude dirs in *exclude_dirs*,
+ prune dirs in *exclude_trees*, prune dirnames in *exclude_dirnames*.
+ """
+ pattern = '*' + suffix
+ # dirname is a normalized absolute path.
+ dirname = path.normpath(path.abspath(dirname))
+ dirlen = len(dirname) + 1 # exclude slash
+ for root, dirs, files in walk(dirname, followlinks=True):
+ if root[dirlen:] in exclude_dirs:
+ continue
+ if root[dirlen:] in exclude_trees:
+ del dirs[:]
+ continue
+ dirs.sort()
+ files.sort()
+ for prunedir in exclude_dirnames:
+ if prunedir in dirs:
+ dirs.remove(prunedir)
+ for sfile in files:
+ if not fnmatch.fnmatch(sfile, pattern):
+ continue
+ qualified_name = path.join(root[dirlen:], sfile[:-len(suffix)])
+ qualified_name = qualified_name.replace(os.path.sep, SEP)
+ if qualified_name in exclude_docs:
+ continue
+ yield qualified_name
+
+
+def mtimes_of_files(dirnames, suffix):
+ for dirname in dirnames:
+ for root, dirs, files in os.walk(dirname):
+ for sfile in files:
+ if sfile.endswith(suffix):
+ try:
+ yield path.getmtime(path.join(root, sfile))
+ except EnvironmentError:
+ pass
+
+
+def shorten_result(text='', keywords=[], maxlen=240, fuzz=60):
+ if not text:
+ text = ''
+ text_low = text.lower()
+ beg = -1
+ for k in keywords:
+ i = text_low.find(k.lower())
+ if (i > -1 and i < beg) or beg == -1:
+ beg = i
+ excerpt_beg = 0
+ if beg > fuzz:
+ for sep in ('.', ':', ';', '='):
+ eb = text.find(sep, beg - fuzz, beg - 1)
+ if eb > -1:
+ eb += 1
+ break
+ else:
+ eb = beg - fuzz
+ excerpt_beg = eb
+ if excerpt_beg < 0:
+ excerpt_beg = 0
+ msg = text[excerpt_beg:beg+maxlen]
+ if beg > fuzz:
+ msg = '... ' + msg
+ if beg < len(text)-maxlen:
+ msg = msg + ' ...'
+ return msg
+
+
+class attrdict(dict):
+ def __getattr__(self, key):
+ return self[key]
+ def __setattr__(self, key, val):
+ self[key] = val
+ def __delattr__(self, key):
+ del self[key]
+
+
+def fmt_ex(ex):
+ """Format a single line with an exception description."""
+ return traceback.format_exception_only(ex.__class__, ex)[-1].strip()
+
+
+def rpartition(s, t):
+ """Similar to str.rpartition from 2.5, but doesn't return the separator."""
+ i = s.rfind(t)
+ if i != -1:
+ return s[:i], s[i+len(t):]
+ return '', s
+
+
+def format_exception_cut_frames(x=1):
+ """
+ Format an exception with traceback, but only the last x frames.
+ """
+ typ, val, tb = sys.exc_info()
+ #res = ['Traceback (most recent call last):\n']
+ res = []
+ tbres = traceback.format_tb(tb)
+ res += tbres[-x:]
+ res += traceback.format_exception_only(typ, val)
+ return ''.join(res)
+
+
+def save_traceback():
+ """
+ Save the current exception's traceback in a temporary file.
+ """
+ exc = traceback.format_exc()
+ fd, path = tempfile.mkstemp('.log', 'sphinx-err-')
+ os.write(fd, exc)
+ os.close(fd)
+ return path
+
+
+def _translate_pattern(pat):
+ """
+ Translate a shell-style glob pattern to a regular expression.
+
+ Adapted from the fnmatch module, but enhanced so that single stars don't
+ match slashes.
+ """
+ i, n = 0, len(pat)
+ res = ''
+ while i < n:
+ c = pat[i]
+ i += 1
+ if c == '*':
+ if i < n and pat[i] == '*':
+ # double star matches slashes too
+ i += 1
+ res = res + '.*'
+ else:
+ # single star doesn't match slashes
+ res = res + '[^/]*'
+ elif c == '?':
+ # question mark doesn't match slashes too
+ res = res + '[^/]'
+ elif c == '[':
+ j = i
+ if j < n and pat[j] == '!':
+ j += 1
+ if j < n and pat[j] == ']':
+ j += 1
+ while j < n and pat[j] != ']':
+ j += 1
+ if j >= n:
+ res = res + '\\['
+ else:
+ stuff = pat[i:j].replace('\\', '\\\\')
+ i = j + 1
+ if stuff[0] == '!':
+ # negative pattern mustn't match slashes too
+ stuff = '^/' + stuff[1:]
+ elif stuff[0] == '^':
+ stuff = '\\' + stuff
+ res = '%s[%s]' % (res, stuff)
+ else:
+ res += re.escape(c)
+ return res + '$'
+
+
+_pat_cache = {}
+
+def patfilter(names, pat):
+ """
+ Return the subset of the list NAMES that match PAT.
+ Adapted from fnmatch module.
+ """
+ result = []
+ if pat not in _pat_cache:
+ _pat_cache[pat] = re.compile(_translate_pattern(pat))
+ match = _pat_cache[pat].match
+ return filter(match, names)
+
+
+no_fn_re = re.compile(r'[^a-zA-Z0-9_-]')
+
+def make_filename(string):
+ return no_fn_re.sub('', string)
+
+
+def nested_parse_with_titles(state, content, node):
+ # hack around title style bookkeeping
+ surrounding_title_styles = state.memo.title_styles
+ surrounding_section_level = state.memo.section_level
+ state.memo.title_styles = []
+ state.memo.section_level = 0
+ state.nested_parse(content, 0, node, match_titles=1)
+ state.memo.title_styles = surrounding_title_styles
+ state.memo.section_level = surrounding_section_level
+
+
+def ustrftime(format, *args):
+ # strftime for unicode strings
+ return time.strftime(unicode(format).encode('utf-8'), *args).decode('utf-8')
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/compat.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/compat.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.util.compat
+ ~~~~~~~~~~~~~~~~~~
+
+ Stuff for docutils compatibility.
+
+ :copyright: 2008 by Georg Brandl.
+ :license: BSD.
+"""
+
+from docutils import nodes
+
+
+# function missing in 0.5 SVN
+def make_admonition(node_class, name, arguments, options, content, lineno,
+ content_offset, block_text, state, state_machine):
+ #if not content:
+ # error = state_machine.reporter.error(
+ # 'The "%s" admonition is empty; content required.' % (name),
+ # nodes.literal_block(block_text, block_text), line=lineno)
+ # return [error]
+ text = '\n'.join(content)
+ admonition_node = node_class(text)
+ if arguments:
+ title_text = arguments[0]
+ textnodes, messages = state.inline_text(title_text, lineno)
+ admonition_node += nodes.title(title_text, '', *textnodes)
+ admonition_node += messages
+ if options.has_key('class'):
+ classes = options['class']
+ else:
+ classes = ['admonition-' + nodes.make_id(title_text)]
+ admonition_node['classes'] += classes
+ state.nested_parse(content, content_offset, admonition_node)
+ return [admonition_node]
+
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/console.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/console.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.util.console
+ ~~~~~~~~~~~~~~~~~~~
+
+ Format colored console output.
+
+ :copyright: 2007-2008 by Georg Brandl.
+ :license: BSD.
+"""
+
+import os
+
+codes = {}
+
+def get_terminal_width():
+ """Borrowed from the py lib."""
+ try:
+ import os, termios, fcntl, struct
+ call = fcntl.ioctl(0, termios.TIOCGWINSZ, "\000"*8)
+ height, width = struct.unpack("hhhh", call)[:2]
+ terminal_width = width
+ except (SystemExit, KeyboardInterrupt):
+ raise
+ except:
+ # FALLBACK
+ terminal_width = int(os.environ.get('COLUMNS', 80))-1
+ return terminal_width
+
+_tw = get_terminal_width()
+
+def print_and_backspace(text, func):
+ if not codes:
+ # if no coloring, don't output fancy backspaces
+ func(text)
+ else:
+ func(text.ljust(_tw) + _tw * "\b")
+
+def color_terminal():
+ if 'COLORTERM' in os.environ:
+ return True
+ term = os.environ.get('TERM', 'dumb').lower()
+ if 'xterm' in term or 'color' in term:
+ return True
+ return False
+
+
+def nocolor():
+ codes.clear()
+
+def coloron():
+ codes.update(_orig_codes)
+
+def colorize(name, text):
+ return codes.get(name, '') + text + codes.get('reset', '')
+
+def create_color_func(name):
+ def inner(text):
+ return colorize(name, text)
+ globals()[name] = inner
+
+_attrs = {
+ 'reset': '39;49;00m',
+ 'bold': '01m',
+ 'faint': '02m',
+ 'standout': '03m',
+ 'underline': '04m',
+ 'blink': '05m',
+}
+
+for _name, _value in _attrs.items():
+ codes[_name] = '\x1b[' + _value
+
+_colors = [
+ ('black', 'darkgray'),
+ ('darkred', 'red'),
+ ('darkgreen', 'green'),
+ ('brown', 'yellow'),
+ ('darkblue', 'blue'),
+ ('purple', 'fuchsia'),
+ ('turquoise', 'teal'),
+ ('lightgray', 'white'),
+]
+
+for i, (dark, light) in enumerate(_colors):
+ codes[dark] = '\x1b[%im' % (i+30)
+ codes[light] = '\x1b[%i;01m' % (i+30)
+
+_orig_codes = codes.copy()
+
+for _name in codes:
+ create_color_func(_name)
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/jsdump.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/jsdump.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.util.jsdump
+ ~~~~~~~~~~~~~~~~~~
+
+ This module implements a simple JavaScript serializer.
+ Uses the basestring encode function from simplejson.
+
+ :copyright: 2008 by Armin Ronacher, Bob Ippolito, Georg Brandl.
+ :license: BSD.
+"""
+
+import re
+
+_str_re = re.compile(r'"(\\\\|\\"|[^"])*"')
+_int_re = re.compile(r'\d+')
+_name_re = re.compile(r'[a-zA-Z]\w*')
+_nameonly_re = re.compile(r'[a-zA-Z]\w*$')
+
+# escape \, ", control characters and everything outside ASCII
+ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
+ESCAPE_DICT = {
+ '\\': '\\\\',
+ '"': '\\"',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+}
+
+ESCAPED = re.compile(r'\\u.{4}|\\.')
+
+
+def encode_string(s):
+ def replace(match):
+ s = match.group(0)
+ try:
+ return ESCAPE_DICT[s]
+ except KeyError:
+ n = ord(s)
+ if n < 0x10000:
+ return '\\u%04x' % (n,)
+ else:
+ # surrogate pair
+ n -= 0x10000
+ s1 = 0xd800 | ((n >> 10) & 0x3ff)
+ s2 = 0xdc00 | (n & 0x3ff)
+ return '\\u%04x\\u%04x' % (s1, s2)
+ return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
+
+def decode_string(s):
+ return ESCAPED.sub(lambda m: eval('u"'+m.group()+'"'), s)
+
+
+reswords = set("""\
+abstract else instanceof switch
+boolean enum int synchronized
+break export interface this
+byte extends long throw
+case false native throws
+catch final new transient
+char finally null true
+class float package try
+const for private typeof
+continue function protected var
+debugger goto public void
+default if return volatile
+delete implements short while
+do import static with
+double in super""".split())
+
+def dumps(obj, key=False):
+ if key:
+ if not isinstance(obj, basestring):
+ obj = str(obj)
+ if _nameonly_re.match(obj) and obj not in reswords:
+ return obj # return it as a bare word
+ else:
+ return encode_string(obj)
+ if obj is None:
+ return 'null'
+ elif obj is True or obj is False:
+ return obj and 'true' or 'false'
+ elif isinstance(obj, (int, long, float)):
+ return str(obj)
+ elif isinstance(obj, dict):
+ return '{%s}' % ','.join('%s:%s' % (
+ dumps(key, True),
+ dumps(value)
+ ) for key, value in obj.iteritems())
+ elif isinstance(obj, (tuple, list, set)):
+ return '[%s]' % ','.join(dumps(x) for x in obj)
+ elif isinstance(obj, basestring):
+ return encode_string(obj)
+ raise TypeError(type(obj))
+
+def dump(obj, f):
+ f.write(dumps(obj))
+
+
+def loads(x):
+ """Loader that can read the JS subset the indexer produces."""
+ nothing = object()
+ i = 0
+ n = len(x)
+ stack = []
+ obj = nothing
+ key = False
+ keys = []
+ while i < n:
+ c = x[i]
+ if c == '{':
+ obj = {}
+ stack.append(obj)
+ key = True
+ keys.append(nothing)
+ i += 1
+ elif c == '[':
+ obj = []
+ stack.append(obj)
+ key = False
+ keys.append(nothing)
+ i += 1
+ elif c in '}]':
+ if key:
+ if keys[-1] is not nothing:
+ raise ValueError("unfinished dict")
+ # empty dict
+ key = False
+ oldobj = stack.pop()
+ keys.pop()
+ if stack:
+ obj = stack[-1]
+ if isinstance(obj, dict):
+ if keys[-1] is nothing:
+ raise ValueError("invalid key object", oldobj)
+ obj[keys[-1]] = oldobj
+ else:
+ obj.append(oldobj)
+ else:
+ break
+ i += 1
+ elif c == ',':
+ if key:
+ raise ValueError("multiple keys")
+ if isinstance(obj, dict):
+ key = True
+ i += 1
+ elif c == ':':
+ if not isinstance(obj, dict):
+ raise ValueError("colon in list")
+ i += 1
+ if not key:
+ raise ValueError("multiple values")
+ key = False
+ else:
+ m = _str_re.match(x, i)
+ if m:
+ y = decode_string(m.group()[1:-1])
+ else:
+ m = _int_re.match(x, i)
+ if m:
+ y = int(m.group())
+ else:
+ m = _name_re.match(x, i)
+ if m:
+ y = m.group()
+ if y == 'true':
+ y = True
+ elif y == 'false':
+ y = False
+ elif y == 'null':
+ y = None
+ elif not key:
+ raise ValueError("bareword as value")
+ else:
+ raise ValueError("read error at pos %d" % i)
+ i = m.end()
+ if isinstance(obj, dict):
+ if key:
+ keys[-1] = y
+ else:
+ obj[keys[-1]] = y
+ key = False
+ else:
+ obj.append(y)
+ if obj is nothing:
+ raise ValueError("nothing loaded from string")
+ return obj
+
+def load(f):
+ return loads(f.read())
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/png.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/png.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.util.png
+ ~~~~~~~~~~~~~~~
+
+ PNG image manipulation helpers.
+
+ :copyright: 2008 by Georg Brandl.
+ :license: BSD.
+"""
+
+import struct
+import binascii
+
+LEN_IEND = 12
+LEN_DEPTH = 22
+
+DEPTH_CHUNK_LEN = struct.pack('!i', 10)
+DEPTH_CHUNK_START = 'tEXtDepth\x00'
+IEND_CHUNK = '\x00\x00\x00\x00IEND\xAE\x42\x60\x82'
+
+
+def read_png_depth(filename):
+ """
+ Read the special tEXt chunk indicating the depth from a PNG file.
+ """
+ result = None
+ f = open(filename, 'rb')
+ try:
+ f.seek(- (LEN_IEND + LEN_DEPTH), 2)
+ depthchunk = f.read(LEN_DEPTH)
+ if not depthchunk.startswith(DEPTH_CHUNK_LEN + DEPTH_CHUNK_START):
+ # either not a PNG file or not containing the depth chunk
+ return None
+ result = struct.unpack('!i', depthchunk[14:18])[0]
+ finally:
+ f.close()
+ return result
+
+
+def write_png_depth(filename, depth):
+ """
+ Write the special tEXt chunk indicating the depth to a PNG file.
+ The chunk is placed immediately before the special IEND chunk.
+ """
+ data = struct.pack('!i', depth)
+ f = open(filename, 'r+b')
+ try:
+ # seek to the beginning of the IEND chunk
+ f.seek(-LEN_IEND, 2)
+ # overwrite it with the depth chunk
+ f.write(DEPTH_CHUNK_LEN + DEPTH_CHUNK_START + data)
+ # calculate the checksum over chunk name and data
+ f.write(struct.pack('!i', binascii.crc32(DEPTH_CHUNK_START + data)))
+ # replace the IEND chunk
+ f.write(IEND_CHUNK)
+ finally:
+ f.close()
diff -r 044383f39525 -r be27ed110b50 buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/smartypants.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/helium-antlib/doc/tools/Sphinx-0.5.1-py2.5.egg/sphinx/util/smartypants.py Wed Oct 28 14:39:48 2009 +0000
@@ -0,0 +1,303 @@
+r"""
+This is based on SmartyPants.py by `Chad Miller`_.
+
+Copyright and License
+=====================
+
+SmartyPants_ license::
+
+ Copyright (c) 2003 John Gruber
+ (http://daringfireball.net/)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name "SmartyPants" nor the names of its contributors
+ may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ This software is provided by the copyright holders and contributors "as
+ is" and any express or implied warranties, including, but not limited
+ to, the implied warranties of merchantability and fitness for a
+ particular purpose are disclaimed. In no event shall the copyright
+ owner or contributors be liable for any direct, indirect, incidental,
+ special, exemplary, or consequential damages (including, but not
+ limited to, procurement of substitute goods or services; loss of use,
+ data, or profits; or business interruption) however caused and on any
+ theory of liability, whether in contract, strict liability, or tort
+ (including negligence or otherwise) arising in any way out of the use
+ of this software, even if advised of the possibility of such damage.
+
+
+smartypants.py license::
+
+ smartypants.py is a derivative work of SmartyPants.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ This software is provided by the copyright holders and contributors "as
+ is" and any express or implied warranties, including, but not limited
+ to, the implied warranties of merchantability and fitness for a
+ particular purpose are disclaimed. In no event shall the copyright
+ owner or contributors be liable for any direct, indirect, incidental,
+ special, exemplary, or consequential damages (including, but not
+ limited to, procurement of substitute goods or services; loss of use,
+ data, or profits; or business interruption) however caused and on any
+ theory of liability, whether in contract, strict liability, or tort
+ (including negligence or otherwise) arising in any way out of the use
+ of this software, even if advised of the possibility of such damage.
+
+.. _Chad Miller: http://web.chad.org/
+"""
+
+import re
+
+
+def sphinx_smarty_pants(t):
+ t = t.replace('"', '"')
+ t = educateDashesOldSchool(t)
+ t = educateQuotes(t)
+ t = t.replace('"', '"')
+ return t
+
+# Constants for quote education.
+
+punct_class = r"""[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]"""
+close_class = r"""[^\ \t\r\n\[\{\(\-]"""
+dec_dashes = r"""–|—"""
+
+# Special case if the very first character is a quote
+# followed by punctuation at a non-word-break. Close the quotes by brute force:
+single_quote_start_re = re.compile(r"""^'(?=%s\\B)""" % (punct_class,))
+double_quote_start_re = re.compile(r"""^"(?=%s\\B)""" % (punct_class,))
+
+# Special case for double sets of quotes, e.g.:
+#
He said, "'Quoted' words in a larger quote."
+double_quote_sets_re = re.compile(r""""'(?=\w)""")
+single_quote_sets_re = re.compile(r"""'"(?=\w)""")
+
+# Special case for decade abbreviations (the '80s):
+decade_abbr_re = re.compile(r"""\b'(?=\d{2}s)""")
+
+# Get most opening double quotes:
+opening_double_quotes_regex = re.compile(r"""
+ (
+ \s | # a whitespace char, or
+ | # a non-breaking space entity, or
+ -- | # dashes, or
+ &[mn]dash; | # named dash entities
+ %s | # or decimal entities
+ &\#x201[34]; # or hex
+ )
+ " # the quote
+ (?=\w) # followed by a word character
+ """ % (dec_dashes,), re.VERBOSE)
+
+# Double closing quotes:
+closing_double_quotes_regex = re.compile(r"""
+ #(%s)? # character that indicates the quote should be closing
+ "
+ (?=\s)
+ """ % (close_class,), re.VERBOSE)
+
+closing_double_quotes_regex_2 = re.compile(r"""
+ (%s) # character that indicates the quote should be closing
+ "
+ """ % (close_class,), re.VERBOSE)
+
+# Get most opening single quotes:
+opening_single_quotes_regex = re.compile(r"""
+ (
+ \s | # a whitespace char, or
+ | # a non-breaking space entity, or
+ -- | # dashes, or
+ &[mn]dash; | # named dash entities
+ %s | # or decimal entities
+ &\#x201[34]; # or hex
+ )
+ ' # the quote
+ (?=\w) # followed by a word character
+ """ % (dec_dashes,), re.VERBOSE)
+
+closing_single_quotes_regex = re.compile(r"""
+ (%s)
+ '
+ (?!\s | s\b | \d)
+ """ % (close_class,), re.VERBOSE)
+
+closing_single_quotes_regex_2 = re.compile(r"""
+ (%s)
+ '
+ (\s | s\b)
+ """ % (close_class,), re.VERBOSE)
+
+def educateQuotes(s):
+ """
+ Parameter: String.
+
+ Returns: The string, with "educated" curly quote HTML entities.
+
+ Example input: "Isn't this fun?"
+ Example output: “Isn’t this fun?”
+ """
+
+ # Special case if the very first character is a quote
+ # followed by punctuation at a non-word-break. Close the quotes by brute force:
+ s = single_quote_start_re.sub("’", s)
+ s = double_quote_start_re.sub("”", s)
+
+ # Special case for double sets of quotes, e.g.:
+ #
He said, "'Quoted' words in a larger quote."
+ s = double_quote_sets_re.sub("“‘", s)
+ s = single_quote_sets_re.sub("‘“", s)
+
+ # Special case for decade abbreviations (the '80s):
+ s = decade_abbr_re.sub("’", s)
+
+ s = opening_single_quotes_regex.sub(r"\1‘", s)
+ s = closing_single_quotes_regex.sub(r"\1’", s)
+ s = closing_single_quotes_regex_2.sub(r"\1’\2", s)
+
+ # Any remaining single quotes should be opening ones:
+ s = s.replace("'", "‘")
+
+ s = opening_double_quotes_regex.sub(r"\1“", s)
+ s = closing_double_quotes_regex.sub(r"”", s)
+ s = closing_double_quotes_regex_2.sub(r"\1”", s)
+
+ # Any remaining quotes should be opening ones.
+ return s.replace('"', "“")
+
+
+def educateQuotesLatex(s, dquotes=("``", "''")):
+ """
+ Parameter: String.
+
+ Returns: The string, with double quotes corrected to LaTeX quotes.
+
+ Example input: "Isn't this fun?"
+ Example output: ``Isn't this fun?'';
+ """
+
+ # Special case if the very first character is a quote
+ # followed by punctuation at a non-word-break. Close the quotes by brute force:
+ s = single_quote_start_re.sub("\x04", s)
+ s = double_quote_start_re.sub("\x02", s)
+
+ # Special case for double sets of quotes, e.g.:
+ #