buildframework/helium/tools/relnotes/relnotes.ant.xml
changeset 179 d8ac696cc51f
parent 1 be27ed110b50
child 217 0f5e3a7fb6af
equal deleted inserted replaced
1:be27ed110b50 179:d8ac696cc51f
   104     </target>
   104     </target>
   105     
   105     
   106     <!-- Private: Find project and baseline of what is running helium -->
   106     <!-- Private: Find project and baseline of what is running helium -->
   107     <target name="release-notes-getcmprojectname">
   107     <target name="release-notes-getcmprojectname">
   108         <script language="jython" setbeans="false">
   108         <script language="jython" setbeans="false">
   109 import nokia.nokiaccm
       
   110 import ccm.extra
   109 import ccm.extra
   111 import traceback
   110 import traceback
   112 import os
   111 import os
   113 import logging
   112 import logging
       
   113 import ccmutil
       
   114 
   114 #logging.basicConfig(level=logging.DEBUG)
   115 #logging.basicConfig(level=logging.DEBUG)
   115 session = None
   116 session = None
   116 try:
   117 try:
   117     database = project.getProperty('ccm.database')
   118     database = project.getProperty('ccm.database')
   118     username = project.getProperty('ccm.user.login')
   119     username = project.getProperty('ccm.user.login')
   119     password = project.getProperty('ccm.user.password')
   120     password = project.getProperty('ccm.user.password')
   120     engine = project.getProperty('ccm.engine.host')
   121     engine = project.getProperty('ccm.engine.host')
   121     dbpath = project.getProperty('ccm.database.path')     
   122     dbpath = project.getProperty('ccm.database.path')     
   122     waroot = project.getProperty('create.bom.workarea.root')
   123     waroot = project.getProperty('create.bom.workarea.root')
   123     if database != None:
   124     
   124         session = nokia.nokiaccm.open_session(username, password, database=database)
   125     session = ccmutil.get_session(database, username, password, engine, dbpath)
   125     else:
       
   126         session = nokia.nokiaccm.open_session(username, password, engine, dbpath)
       
   127         
       
   128     cmproject = ccm.extra.get_toplevel_project(session, waroot)
   126     cmproject = ccm.extra.get_toplevel_project(session, waroot)
       
   127     
   129     if cmproject == None:
   128     if cmproject == None:
   130         print 'Error: ' + waroot + ' must be a synergy project and still be in database'
   129         print 'Error: ' + waroot + ' must be a synergy project and still be in database'
   131     else:
   130     else:
   132         project.setProperty("ccm.toplevel.project", str(cmproject))
   131         project.setProperty("ccm.toplevel.project", str(cmproject))
   133     session.close()
   132     session.close()
   134 except Exception, ex:
   133 except Exception, ex:
   135     print 'Caught exception: ' + str(ex)
   134     print 'Caught exception: ' + str(ex)
   136     traceback.print_exc()
   135     traceback.print_exc()
   137         </script>
   136         </script>
   138         
       
   139         <hlm:python outputproperty="ccm.toplevel.baseline">
   137         <hlm:python outputproperty="ccm.toplevel.baseline">
   140 import nokia.nokiaccm
       
   141 import traceback
   138 import traceback
   142 import ant
   139 import ant
   143 import logging
   140 import logging
       
   141 import ccmutil
   144 logging.disable(logging.INFO)
   142 logging.disable(logging.INFO)
   145 session = None
   143 session = None
   146 try:
   144 try:
   147     database = ant.get_property(r'${ccm.database}')
   145     database = ant.get_property(r'${ccm.database}')
   148     username = ant.get_property(r'${ccm.user.login}')
   146     username = ant.get_property(r'${ccm.user.login}')
   149     password = ant.get_property(r'${ccm.user.password}')
   147     password = ant.get_property(r'${ccm.user.password}')
   150     engine = ant.get_property(r'${ccm.engine.host}')
   148     engine = ant.get_property(r'${ccm.engine.host}')
   151     dbpath = ant.get_property(r'${ccm.database.path}')
   149     dbpath = ant.get_property(r'${ccm.database.path}')
   152     if database != None:
   150     session = ccmutil.get_session(database, username, password, engine, dbpath)
   153         session = nokia.nokiaccm.open_session(username, password, database=database)
       
   154     else:
       
   155         session = nokia.nokiaccm.open_session(username, password, engine, dbpath)
       
   156         
       
   157     cmproject = session.create(ant.get_property(r'${ccm.toplevel.project}'))
   151     cmproject = session.create(ant.get_property(r'${ccm.toplevel.project}'))
   158     print cmproject.baseline
   152     print cmproject.baseline
   159     session.close()
   153     session.close()
   160 except Exception, ex:
   154 except Exception, ex:
   161     print 'Caught exception: ' + str(ex)
   155     print 'Caught exception: ' + str(ex)
   170     <target name="release-notes-getprojectname">
   164     <target name="release-notes-getprojectname">
   171         <hlm:python outputproperty="release.notes.temp">
   165         <hlm:python outputproperty="release.notes.temp">
   172 import amara
   166 import amara
   173 import ant
   167 import ant
   174 
   168 
   175 bomfile = open(r"${build.log.dir}/${build.id}_BOM.xml")
   169 bomfile = open(r"${temp.build.dir}/${build.id}_BOM.xml")
   176 bom = amara.parse(bomfile)
   170 bom = amara.parse(bomfile)
   177 
   171 
   178 for p in bom.bom.content.project:
   172 for p in bom.bom.content.project:
   179     if (str(p.name).startswith(ant.get_property(r'${project.startswith}'))):
   173     if (str(p.name).startswith(ant.get_property(r'${project.startswith}'))):
   180         print str(p.name)
   174         print str(p.name)
   186         
   180         
   187     </target>
   181     </target>
   188     
   182     
   189     <!-- Private: Write projects, baselines and task list for MC and IBUSAL -->
   183     <!-- Private: Write projects, baselines and task list for MC and IBUSAL -->
   190     <target name="release-notes-ccm" depends="get-ccm-password,release-notes-getcmprojectname,create-bom">
   184     <target name="release-notes-ccm" depends="get-ccm-password,release-notes-getcmprojectname,create-bom">
   191         
       
   192         <hlm:python>
   185         <hlm:python>
   193 import amara
   186 import amara
   194 import nokia.nokiaccm
   187 import ant
   195 import ant
   188 import bomtofile
   196 
   189 import ccmutil
   197 class BOMToFile(object):
   190 
   198     """
   191 bomfile = open(r"${temp.build.dir}/${build.id}_BOM.xml")
   199     Read BOM and output in text
       
   200     """
       
   201     def __init__(self, session, project_name, project, output_dir):
       
   202         self.project_name = project_name
       
   203         self.project = project
       
   204         self.output_dir = output_dir
       
   205         self.session = session
       
   206       
       
   207     def writeprojects(self):
       
   208         fileout = file(self.output_dir + '/' + self.project_name + '_projects.txt', 'w')
       
   209         
       
   210         i = 1
       
   211         for project in self.project.baseline:
       
   212             fileout.write(str(i) + ") " + str(project) + "\n")
       
   213             
       
   214             i += 1
       
   215         fileout.close()
       
   216         
       
   217     def writebaselines(self):
       
   218         fileout = file(self.output_dir + '/' + self.project_name + '_baselines.txt', 'w')    
       
   219         
       
   220         i = 1
       
   221         for project in self.project.baseline:
       
   222             fileout.write(str(i) + ") " + str(project) + "\n")
       
   223             
       
   224             cmproject = self.session.create(str(project))
       
   225             
       
   226             try:
       
   227                 baseline = str(cmproject.baseline).strip()
       
   228                 if baseline == "None":
       
   229                     fileout.write(str(i) + ") " + str(project) + "\n")
       
   230                 else:
       
   231                     fileout.write(str(i) + ") " + baseline + "\n")
       
   232                 i += 1
       
   233             except Exception, ex:
       
   234                 print ex
       
   235         fileout.close()
       
   236             
       
   237     def writetasks(self):
       
   238         if self.project.xml_properties.has_key("task"):
       
   239             fileout = file(self.output_dir + '/' + self.project_name + '_tasks.txt', 'w')
       
   240             
       
   241             i = 1
       
   242             for task in self.project.task:
       
   243                 fileout.write(str(i) + ") Task " + str(task) + "\n")
       
   244                 i += 1
       
   245             fileout.close()
       
   246 
       
   247 bomfile = open(r"${build.log.dir}/${build.id}_BOM.xml")
       
   248 bom = amara.parse(bomfile)
   192 bom = amara.parse(bomfile)
   249 database = ant.get_property(r'${ccm.database}')
   193 session = ccmutil.get_session(ant.get_property(r'${ccm.database}'), ant.get_property(r'${ccm.user.login}'), ant.get_property(r'${ccm.user.password}'), ant.get_property(r'${ccm.engine.host}'), ant.get_property(r'${ccm.database.path}'))
   250 username = ant.get_property(r'${ccm.user.login}')
       
   251 password = ant.get_property(r'${ccm.user.password}')
       
   252 engine = ant.get_property(r'${ccm.engine.host}')
       
   253 dbpath = ant.get_property(r'${ccm.database.path}')
       
   254 if database != None:
       
   255     session = nokia.nokiaccm.open_session(username, password, database=database)
       
   256 else:
       
   257     session = nokia.nokiaccm.open_session(username, password, engine, dbpath)
       
   258 
       
   259 for p in bom.bom.content.project:
   194 for p in bom.bom.content.project:
   260     if p.name == ant.get_property(r'${ccm.toplevel.project}'):
   195     if p.name == ant.get_property(r'${ccm.toplevel.project}'):
   261         btof = BOMToFile(session, 'MC', p, ant.get_property(r'${releasenotes.output.dir}'))
   196         bomwriter = bomtofile.BOMWriter(session, 'MC', p, ant.get_property(r'${releasenotes.output.dir}'))
   262         
   197         bomwriter.writeprojects()
   263         btof.writeprojects()
   198         bomwriter.writebaselines()
   264         btof.writebaselines()
   199         bomwriter.writetasks()
   265             
       
   266         btof.writetasks()
       
   267             
   200             
   268     if (str(p.name).startswith('IBUSAL')):
   201     if (str(p.name).startswith('IBUSAL')):
   269         btof = BOMToFile(session, 'IBUSAL', p, ant.get_property(r'${releasenotes.output.dir}'))
   202         bomwriter = bomtofile.BOMWriter(session, 'IBUSAL', p, ant.get_property(r'${releasenotes.output.dir}'))
   270         
   203         bomwriter.writeprojects()
   271         btof.writeprojects()
   204         bomwriter.writetasks()
   272             
       
   273         btof.writetasks()
       
   274             
       
   275 session.close()
   205 session.close()
   276 bomfile.close()
   206 bomfile.close()
   277 
       
   278         </hlm:python>
   207         </hlm:python>
   279     </target>
   208     </target>
   280     
   209     
   281     <!-- Private: Read BOM and write ICF list -->
   210     <!-- Private: Read BOM and write ICF list -->
   282     <target name="release-notes-icfs" depends="create-bom">
   211     <target name="release-notes-icfs" depends="create-bom">
   283         <exec executable="python" dir="${helium.dir}/tools/relnotes" failonerror="${failonerror}">
   212         <exec executable="python" dir="${helium.dir}/tools/relnotes" failonerror="${failonerror}">
   284             <arg value="icf2txt.py"/>
   213             <arg value="icf2txt.py"/>
   285             <arg value="${build.log.dir}/${build.id}_BOM.xml"/>            
   214             <arg value="${temp.build.dir}/${build.id}_BOM.xml"/>            
   286             <arg value="${releasenotes.output.dir}/icdicf.txt"/>
   215             <arg value="${releasenotes.output.dir}/icdicf.txt"/>
   287         </exec>
   216         </exec>
   288     </target>
   217     </target>
   289     
   218     
   290     <!-- Private: -->
   219     <!-- Private: -->