--- a/buildframework/helium/build.xml Thu Jun 10 13:50:24 2010 +0800
+++ b/buildframework/helium/build.xml Mon Jul 26 11:04:29 2010 +0800
@@ -1,86 +1,329 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-============================================================================
-Name : build.xml
-Part of : Helium
-
-Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
-This component and the accompanying materials are made available
-under the terms of the License "Eclipse Public License v1.0"
-which accompanies this distribution, and is available
-at the URL "http://www.eclipse.org/legal/epl-v10.html".
-
-Initial Contributors:
-Nokia Corporation - initial contribution.
-
-Contributors:
-
-Description:
-
-============================================================================
--->
-<project name="helium-build" default="help" xmlns:au="org.apache.ant.antunit" xmlns:hlm="http://www.nokia.com/helium">
- <description>
- Helium targets to build helium itself.
- </description>
-
- <import file="build-jar.ant.xml"/>
- <property name="build.drive" location="${env.TEMP}/helium/temp_drive"/>
- <mkdir dir="${build.drive}/"/>
-
- <!-- @property helium.version
- @type string
- @scope private -->
- <property file="${helium.dir}/config/version.txt"/>
- <property name="release.label" value="${helium.version}"/>
-
- <!-- Override docs targets to do more for Helium. -->
- <target name="apidocs" depends="python-apidocs,java-apidocs,antdoclet,internal.docs.apidocs"/>
- <!-- Generate rst files for docs -->
- <target name="prep-textdocs" depends="overview-to-html,tools-rst-table,dependency-diagram,
- dependency-logs,release-diff,helium-user-graph,helium-prep-textdocs,internal.docs.prep-textdocs"/>
- <!-- generate all the user documentation for helium -->
- <target name="docs" depends="clean-doc-dir,database,apidocs,textdocs,add-policies-to-docs"/>
-
- <import file="helium.ant.xml"/>
- <import file="tools/startup/antserver/antserver.ant.xml"/>
-
-
-
-
- <target name="must-property-comments">
- <!--<xslt in="${data.model.file}" out="${data.model.parsed}" style="${data.model.xsl}"/>-->
- <for param="ant.file">
- <fileset dir="${helium.dir}" includes="helium.ant.xml">
- </fileset>
- <sequential>
- <script language="jython">
-import re
-import java.io
-import org.dom4j
-import org.dom4j.io
-
-model = org.dom4j.io.SAXReader().read(java.io.File(project.getProperty("helium.dir") + '/build/datamodel.out'))
-
-user_props = model.selectNodes('//property[editStatus="must"]')
-indent = ' '
-out = open('required_properties.txt', 'w')
-for prop in user_props:
-# print prop
- property_comment = indent + "<!--* @property " + prop.elementTextTrim('name') + "\n"
- property_comment += indent + prop.elementTextTrim('description') + "\n"
- property_comment += indent + "@type " + prop.elementTextTrim('type') + "\n"
- property_comment += indent + "@editable required\n"
- property_comment += indent + "@scope public\n"
- property_comment += indent + "-->\n\n"
- print property_comment
- out.write(property_comment)
-
-out.close()
- </script>
- </sequential>
- </for>
- </target>
-</project>
-
+<?xml version="1.0"?>
+<project name="helium-root" default="all">
+
+ <property environment="env"/>
+ <import file="helium/build.xml"/>
+
+
+ <property name="helium.svn.workarea.dir" value="\\vcfiler02\proj2\Juno\juno_build_release\helium\svn"/>
+ <property name="helium.ccm.workarea.dir" value="\\vcfiler02\proj2\Juno\juno_build_release\internal\workarea\helium\next"/>
+ <property name="helium.svn.url" value="http://helium.nmp.nokia.com/svn" />
+
+ <target name="unittest">
+ <ant dir="helium" target="unittest" inheritAll="false"/>
+ </target>
+
+ <target name="ant-unittest" depends="xtest-diamonds">
+ <ant dir="helium" target="ant-unittest" inheritAll="false"/>
+ </target>
+
+ <target name="ju-unittest">
+ <ant dir="helium" target="ju-unittest" inheritAll="false"/>
+ </target>
+
+ <target name="py-unittest">
+ <ant dir="helium" target="py-unittest" inheritAll="false"/>
+ </target>
+
+ <target name="check">
+ <ant dir="helium" target="check" inheritAll="false"/>
+ </target>
+
+ <target name="check-distribution-policies">
+ <ant dir="helium" target="delete-svn-unversioned" inheritAll="false"/>
+ <ant dir="helium" target="check-distribution-policies" inheritAll="false"/>
+ </target>
+
+ <target name="pylint">
+ <ant dir="helium" target="pylint" inheritAll="false"/>
+ </target>
+
+ <target name="antlint">
+ <ant dir="helium" target="antlint" inheritAll="false"/>
+ </target>
+
+ <target name="java-checkstyle">
+ <ant dir="helium" target="java-checkstyle" inheritAll="false"/>
+ </target>
+
+ <target name="apidocs">
+ <ant dir="helium" target="apidocs" inheritAll="false"/>
+ </target>
+
+ <target name="textdocs">
+ <ant dir="helium" target="textdocs" inheritAll="false"/>
+ </target>
+
+ <target name="docs">
+ <ant dir="helium" target="docs" inheritAll="false"/>
+ </target>
+
+ <target name="upload-docs">
+ <ant dir="helium" target="upload-docs" inheritAll="false"/>
+ </target>
+
+ <target name="build-zip">
+ <ant dir="helium" target="build-zip" inheritAll="false"/>
+ </target>
+
+ <target name="all" depends="unittest,apidocs,docs,pylint,java-checkstyle"/>
+
+ <!-- Create a new branch from the current working copy.
+
+ A ${branch} property must be defined for the branch version, e.g. 0.9.x.
+ -->
+ <target name="branch" description="Create a new branch from the current working copy">
+ <fail unless="branch">"branch" property not defined, e.g. 0.21.x</fail>
+ <fail unless="version">"version" property not defined, e.g. 0.21</fail>
+ <!-- Major Branches need a reference_branch set -->
+ <if>
+ <contains string="${branch}" substring=".0" />
+ <then>
+ <fail unless="reference_branch">"reference_branch" property not defined, e.g. 0.21</fail>
+ </then>
+ </if>
+ <if>
+ <not>
+ <isset property="create.branch"/>
+ </not>
+ <then>
+ <input validargs="y,n" addproperty="create.branch">
+A svn branch will be made:
+To: ${helium.svn.url}/helium/branches/helium-${branch}
+Do you want to continue?
+ </input>
+ </then>
+ </if>
+ <if>
+ <equals arg1="${create.branch}" arg2="y"/>
+ <then>
+ <propertyfile file="helium\config\version.txt" comment="Helium version - DO NOT EDIT">
+ <entry key="helium.version" value="${version}"/>
+ </propertyfile>
+ <svn username="${env.USERNAME}" password="${env.USERNAME}">
+ <commit file="helium\config\version.txt"
+ message="Updating version to ${version}"/>
+ </svn>
+ <if>
+ <or>
+ <not>
+ <isset property="reference_branch" />
+ </not>
+ <equals arg1="${reference_branch}" arg2="trunk" />
+ </or>
+ <then>
+ <echo message="Create a trunk based branch" />
+ <!-- Create a Sprint branch -->
+ <svn username="${env.USERNAME}" password="${env.USERNAME}">
+ <copy srcurl="${helium.svn.url}/helium/trunk"
+ desturl="${helium.svn.url}/helium/branches/helium-${branch}"
+ message="Created release branch for helium-${branch} branch based on helium trunk."/>
+ </svn>
+ </then>
+ <else>
+ <echo message="Create a Sprint based branch" />
+ <!-- Create a Major branch -->
+ <svn username="${env.USERNAME}" password="${env.USERNAME}">
+ <copy srcurl="${helium.svn.url}/helium/branches/helium-${reference_branch}"
+ desturl="${helium.svn.url}/helium/branches/helium-${branch}"
+ message="Created release branch for helium-${branch} branch based on helium-${reference_branch}."/>
+ <copy srcurl="${helium.svn.url}/helium/trunk/helium/config/version.txt"
+ desturl="${helium.svn.url}/helium/branches/helium-${branch}/helium/config/version.txt"
+ message="Updating version to ${version}."/>
+ </svn>
+ </else>
+ </if>
+ <svn username="${env.USERNAME}" password="${env.USERNAME}">
+ <switch path="${helium.svn.workarea.dir}\helium-next"
+ url="${helium.svn.url}/helium/branches/helium-${branch}"/>
+ </svn>
+ </then>
+ </if>
+ </target>
+
+ <!-- Create a new release tag from the given branch.
+
+
+ -->
+ <target name="release" description="Create a new release tag from the current working copy">
+ <fail unless="branch">"branch" property not defined</fail>
+ <fail unless="version">"version" property not defined</fail>
+ <property name="url" value=""/>
+ <if>
+ <not>
+ <isset property="create.release"/>
+ </not>
+ <then>
+ <input validargs="y,n" addproperty="create.release">
+A svn tag will be made:
+From: ${helium.svn.url}/helium/branches/helium-${branch}
+To : ${helium.svn.url}/helium/tags/helium-${version}
+Do you want to continue?
+ </input>
+ </then>
+ </if>
+ <if>
+ <equals arg1="${create.release}" arg2="y"/>
+ <then>
+ <echo>Creating release tag from ${helium.svn.url}/helium/branches/helium-${branch}</echo>
+ <propertyfile file="${helium.svn.workarea.dir}\helium-next\helium\config\version.txt" comment="Helium version - DO NOT EDIT">
+ <entry key="helium.version" value="${version}"/>
+ </propertyfile>
+ <svn username="${env.USERNAME}" password="${env.USERNAME}">
+ <commit file="${helium.svn.workarea.dir}\helium-next\helium\config\version.txt" message="Updating version to ${version}"/>
+ </svn>
+ <svn username="${env.USERNAME}" password="${env.USERNAME}" failonerror="false">
+ <copy srcurl="${helium.svn.url}/helium/branches/helium-${branch}"
+ desturl="${helium.svn.url}/helium/tags/helium-${version}"
+ message="Created release tag for helium-${version} release."/>
+ <switch path="${helium.svn.workarea.dir}\helium-next"
+ url="${helium.svn.url}/helium/tags/helium-${version}"/>
+ </svn>
+ <exec executable="python" failonerror="true">
+ <arg line="bin\trac-add-version.py"/>
+ <arg value="helium-${version}"/>
+ </exec>
+ </then>
+ </if>
+ </target>
+
+ <target name="merge-svn-to-ccm">
+ <exec executable="c:\apps\bc\bc2.exe">
+ <arg value="@${helium.dir}/tools/common/svn-ccm-sync.bc.txt"/>
+ <arg value="${helium.svn.workarea.dir}\helium-next\helium"/>
+ <arg value="${helium.ccm.workarea.dir}\helium"/>
+ <arg value="c:\svn_ccm_diff.txt"/>
+ </exec>
+ </target>
+
+ <target name="release-email" description="Create a release email HTML content">
+ <fail unless="milestone">"milestone" property not defined (typically sprint name)</fail>
+ <fail unless="release">"release" property not defined</fail>
+ <exec executable="python" failonerror="true">
+ <arg line="bin\trac-collect-release-email-changes.py"/>
+ <arg value="${milestone}"/>
+ </exec>
+ <fmpp sourceFile="${helium.dir}/extensions/nokia/doc/src/release_notes.html.ftl"
+ outputFile="${helium.dir}/build/doc/release_notes_${release}.html">
+ <data expandProperties="yes">
+ doc: xml(${helium.dir}/../release_notes_tickets_${milestone}.xml)
+ cfg: tdd(${helium.dir}/../release_notes_config.txt)
+ ant: antProperties(milestone, release)
+ </data>
+ </fmpp>
+ <fmpp sourceFile="${helium.dir}/extensions/nokia/doc/src/release_notes.rst.ftl"
+ outputFile="${helium.dir}/extensions/nokia/doc/src/releasenotes/release_notes_${release}.rst">
+ <data expandProperties="yes">
+ doc: xml(${helium.dir}/../release_notes_tickets_${milestone}.xml)
+ cfg: tdd(${helium.dir}/../release_notes_config.txt)
+ ant: antProperties(milestone, release)
+ </data>
+ </fmpp>
+ </target>
+
+ <!-- Get a listing of the number of story points completed in a sprint per user. -->
+ <target name="story-points">
+ <fail unless="milestone">"milestone" property not defined (typically sprint name)</fail>
+ <echo>Story points per developer for ${milestone}:
+ </echo>
+ <exec executable="python" failonerror="true">
+ <arg line="bin\trac-user-story-points.py"/>
+ <arg value="${milestone}"/>
+ </exec>
+ </target>
+
+ <!-- Shows a dialog allowing the daily SCRUM information to be posted to the Trac wiki. -->
+ <target name="scrum">
+ <antform title="Submit SCRUM notes">
+ <dateProperty label="Date" property="date" dateFormat="yyyy-MM-dd" focus="true"/>
+ <multiLineTextProperty label="Done" property="done"/>
+ <multiLineTextProperty label="Todo" property="todo"/>
+ <multiLineTextProperty label="Blocking" property="blocking"/>
+ </antform>
+ <echo file="scrum_notes.txt">
+== ${env.USERNAME} ==
+ '''Done:''' ${done}
+
+ '''Todo:''' ${todo}
+
+ '''Blocking:''' ${blocking}
+ </echo>
+ <if>
+ <isset property="date"/>
+ <then>
+ <echo>${done}</echo>
+ <property name="page" value="Scrum/Log/${date}"/>
+ <property name="done" value="None"/>
+ <property name="todo" value="None"/>
+ <property name="blocking" value="None"/>
+ <exec executable="python" failonerror="true">
+ <arg line="bin\trac-update-scrum-notes.py"/>
+ <arg line="--file scrum_notes.txt ${page}"/>
+ </exec>
+ </then>
+ </if>
+ </target>
+
+ <!-- Install BBControllerService.py and start the service to control Buildbot service -->
+ <target name="install-bb-controller-service">
+ <copy file="bin\BBControllerService.py" tofile="c:\apps\actpython\Lib\site-packages\BBControllerService.py"/>
+ <exec osfamily="windows" executable="python" failonerror="true">
+ <env key="PYTHONPATH" value="${env.PYTHONPATH};${python.modules.path}"/>
+ <arg line="c:\apps\actpython\Lib\site-packages\BBControllerService.py"/>
+ <arg line="--startup auto"/>
+ <arg line="install"/>
+ </exec>
+ <exec osfamily="windows" executable="python" failonerror="true">
+ <env key="PYTHONPATH" value="${env.PYTHONPATH};${python.modules.path}"/>
+ <arg line="c:\apps\actpython\Lib\site-packages\BBControllerService.py"/>
+ <arg line="start"/>
+ </exec>
+ </target>
+
+ <!-- Use this target to restart a Helium buildbot service. BBControllerService.py service
+ must be installed in buildbot machine.
+ Usage:
+ <pre>
+ Usage: hlm restart-buildbot -Dbb.machine=[Buildbot machine name] -Dbb.command=[BB_RESTART]
+ </pre> -->
+ <target name="restart-buildbot">
+ <script language="jython" setbeans="false">
+import os
+import socket
+import time
+import sys
+import traceback
+
+bbmachie = project.getProperty("bb.machine")
+cmd = project.getProperty("bb.cmd")
+
+if bbmachie == None or cmd == None :
+ print "Buildbot machine name and/or Command not found."
+ print "Usage: hlm restart-buildbot -Dbb.machine=[Buildbot machine name] -Dbb.cmd=[BB_RESTART]"
+else :
+ sockt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ sockt.connect((bbmachie, int(50008)))
+ sockt.send(cmd)
+ data = sockt.recv(1024)
+ print "Response: ", data
+ except:
+ print "Buildbot machine is busy or not found."
+ traceback.print_exc()
+ sockt.close()
+ </script>
+ </target>
+
+ <target name="coffee">
+ <splash imageurl="file:////${helium.dir}/../coffee.png" showduration="5000"/>
+ </target>
+
+ <!-- Create a zip file of Helium for release via Hydra -->
+ <target name="helium-hydra-zip">
+ <delete file="${env.TEMP}/helium-${helium.version}.zip" failonerror="false"/>
+ <zip destfile="${env.TEMP}/helium-${helium.version}.zip">
+ <zipfileset dir="./helium" prefix="helium"/>
+ </zip>
+ </target>
+
+</project>
\ No newline at end of file