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) |
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: --> |