diff options
author | Richard Purdie <richard@openedhand.com> | 2007-01-08 23:53:01 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2007-01-08 23:53:01 +0000 |
commit | f5665d5bfcfb13d01da9e4c7d5046453e80f7baf (patch) | |
tree | b8908549afaf3006bf3763419711090ac999c2a4 /bitbake/lib/bb | |
parent | aec95de5f7dca2afa3a4a0bdb0d4d553c13f680d (diff) | |
download | poky-f5665d5bfcfb13d01da9e4c7d5046453e80f7baf.tar.gz |
bitbake: Sync with upstream.
* File licence headers were sanitised causing most of the diff.
* cooker.py was created from bin/bitbake.
* cvs fetcher port option was added
* The -f force option was fixed to work correctly
* Multiple entries in rrecrdeps are now handled correctly
(allows adding do_deploy to image depends)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1129 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake/lib/bb')
29 files changed, 1281 insertions, 571 deletions
diff --git a/bitbake/lib/bb/COW.py b/bitbake/lib/bb/COW.py index 826d435f98..e5063d60a8 100644 --- a/bitbake/lib/bb/COW.py +++ b/bitbake/lib/bb/COW.py | |||
@@ -1,12 +1,27 @@ | |||
1 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
3 | """ | 3 | # |
4 | This is a copy on write dictionary and set which abuses classes to try and be nice and fast. | 4 | # This is a copy on write dictionary and set which abuses classes to try and be nice and fast. |
5 | 5 | # | |
6 | Please Note: | 6 | # Copyright (C) 2006 Tim Amsell |
7 | Be careful when using mutable types (ie Dict and Lists) - operations involving these are SLOW. | 7 | # |
8 | Assign a file to __warn__ to get warnings about slow operations. | 8 | # This program is free software; you can redistribute it and/or modify |
9 | """ | 9 | # it under the terms of the GNU General Public License version 2 as |
10 | # published by the Free Software Foundation. | ||
11 | # | ||
12 | # This program is distributed in the hope that it will be useful, | ||
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | # GNU General Public License for more details. | ||
16 | # | ||
17 | # You should have received a copy of the GNU General Public License along | ||
18 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
19 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
20 | # | ||
21 | #Please Note: | ||
22 | # Be careful when using mutable types (ie Dict and Lists) - operations involving these are SLOW. | ||
23 | # Assign a file to __warn__ to get warnings about slow operations. | ||
24 | # | ||
10 | 25 | ||
11 | from inspect import getmro | 26 | from inspect import getmro |
12 | 27 | ||
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index 61eb5f3db8..a11af84b12 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py | |||
@@ -1,27 +1,25 @@ | |||
1 | #!/usr/bin/python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | # |
5 | BitBake Build System Python Library | 4 | # BitBake Build System Python Library |
6 | 5 | # | |
7 | Copyright (C) 2003 Holger Schurig | 6 | # Copyright (C) 2003 Holger Schurig |
8 | Copyright (C) 2003, 2004 Chris Larson | 7 | # Copyright (C) 2003, 2004 Chris Larson |
9 | 8 | # | |
10 | Based on Gentoo's portage.py. | 9 | # Based on Gentoo's portage.py. |
11 | 10 | # | |
12 | This program is free software; you can redistribute it and/or modify it under | 11 | # This program is free software; you can redistribute it and/or modify |
13 | the terms of the GNU General Public License as published by the Free Software | 12 | # it under the terms of the GNU General Public License version 2 as |
14 | Foundation; either version 2 of the License, or (at your option) any later | 13 | # published by the Free Software Foundation. |
15 | version. | 14 | # |
16 | 15 | # This program is distributed in the hope that it will be useful, | |
17 | This program is distributed in the hope that it will be useful, but WITHOUT | 16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 18 | # GNU General Public License for more details. |
20 | 19 | # | |
21 | You should have received a copy of the GNU General Public License along with | 20 | # You should have received a copy of the GNU General Public License along |
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 21 | # with this program; if not, write to the Free Software Foundation, Inc., |
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | 22 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
24 | """ | ||
25 | 23 | ||
26 | __version__ = "1.7.4" | 24 | __version__ = "1.7.4" |
27 | 25 | ||
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 942bdc1a39..bf6b612f32 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py | |||
@@ -1,29 +1,29 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | # |
5 | BitBake 'Build' implementation | 4 | # BitBake 'Build' implementation |
6 | 5 | # | |
7 | Core code for function execution and task handling in the | 6 | # Core code for function execution and task handling in the |
8 | BitBake build tools. | 7 | # BitBake build tools. |
9 | 8 | # | |
10 | Copyright (C) 2003, 2004 Chris Larson | 9 | # Copyright (C) 2003, 2004 Chris Larson |
11 | 10 | # | |
12 | Based on Gentoo's portage.py. | 11 | # Based on Gentoo's portage.py. |
13 | 12 | # | |
14 | This program is free software; you can redistribute it and/or modify it under | 13 | # This program is free software; you can redistribute it and/or modify |
15 | the terms of the GNU General Public License as published by the Free Software | 14 | # it under the terms of the GNU General Public License version 2 as |
16 | Foundation; either version 2 of the License, or (at your option) any later | 15 | # published by the Free Software Foundation. |
17 | version. | 16 | # |
18 | 17 | # This program is distributed in the hope that it will be useful, | |
19 | This program is distributed in the hope that it will be useful, but WITHOUT | 18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 20 | # GNU General Public License for more details. |
22 | 21 | # | |
23 | You should have received a copy of the GNU General Public License along with | 22 | # You should have received a copy of the GNU General Public License along |
24 | 23 | # with this program; if not, write to the Free Software Foundation, Inc., | |
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | 24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
26 | """ | 25 | # |
26 | #Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | 27 | ||
28 | from bb import data, fetch, event, mkdirhier, utils | 28 | from bb import data, fetch, event, mkdirhier, utils |
29 | import bb, os | 29 | import bb, os |
@@ -219,14 +219,18 @@ def exec_func_shell(func, d): | |||
219 | bb.msg.error(bb.msg.domain.Build, "function %s failed" % func) | 219 | bb.msg.error(bb.msg.domain.Build, "function %s failed" % func) |
220 | if data.getVar("BBINCLUDELOGS", d): | 220 | if data.getVar("BBINCLUDELOGS", d): |
221 | bb.msg.error(bb.msg.domain.Build, "log data follows (%s)" % logfile) | 221 | bb.msg.error(bb.msg.domain.Build, "log data follows (%s)" % logfile) |
222 | f = open(logfile, "r") | 222 | number_of_lines = data.getVar("BBINCLUDELOGS_LINES", d) |
223 | while True: | 223 | if number_of_lines: |
224 | l = f.readline() | 224 | os.system('tail -n%s %s' % (number_of_lines, logfile)) |
225 | if l == '': | 225 | else: |
226 | break | 226 | f = open(logfile, "r") |
227 | l = l.rstrip() | 227 | while True: |
228 | print '| %s' % l | 228 | l = f.readline() |
229 | f.close() | 229 | if l == '': |
230 | break | ||
231 | l = l.rstrip() | ||
232 | print '| %s' % l | ||
233 | f.close() | ||
230 | else: | 234 | else: |
231 | bb.msg.error(bb.msg.domain.Build, "see log in %s" % logfile) | 235 | bb.msg.error(bb.msg.domain.Build, "see log in %s" % logfile) |
232 | raise FuncFailed( logfile ) | 236 | raise FuncFailed( logfile ) |
@@ -252,9 +256,8 @@ def exec_task(task, d): | |||
252 | raise EventException("Missing node in task graph", InvalidTask(task, d)) | 256 | raise EventException("Missing node in task graph", InvalidTask(task, d)) |
253 | 257 | ||
254 | # check whether this task needs executing.. | 258 | # check whether this task needs executing.. |
255 | if not data.getVarFlag(task, 'force', d): | 259 | if stamp_is_current(task, d): |
256 | if stamp_is_current(task, d): | 260 | return 1 |
257 | return 1 | ||
258 | 261 | ||
259 | # follow digraph path up, then execute our way back down | 262 | # follow digraph path up, then execute our way back down |
260 | def execute(graph, item): | 263 | def execute(graph, item): |
@@ -291,59 +294,43 @@ def exec_task(task, d): | |||
291 | 294 | ||
292 | # make stamp, or cause event and raise exception | 295 | # make stamp, or cause event and raise exception |
293 | if not data.getVarFlag(task, 'nostamp', d): | 296 | if not data.getVarFlag(task, 'nostamp', d): |
294 | mkstamp(task, d) | 297 | make_stamp(task, d) |
295 | 298 | ||
296 | def stamp_is_current_cache(dataCache, file_name, task, checkdeps = 1): | 299 | def extract_stamp_data(d, fn): |
297 | """ | 300 | """ |
298 | Check status of a given task's stamp. | 301 | Extracts stamp data from d which is either a data dictonary (fn unset) |
299 | Returns 0 if it is not current and needs updating. | 302 | or a dataCache entry (fn set). |
300 | Same as stamp_is_current but works against the dataCache instead of d | ||
301 | """ | 303 | """ |
302 | task_graph = dataCache.task_queues[file_name] | 304 | if fn: |
303 | 305 | return (d.task_queues[fn], d.stamp[fn], d.task_deps[fn]) | |
304 | if not dataCache.stamp[file_name]: | 306 | task_graph = data.getVar('_task_graph', d) |
305 | return 0 | 307 | if not task_graph: |
306 | 308 | task_graph = bb.digraph() | |
307 | stampfile = "%s.%s" % (dataCache.stamp[file_name], task) | 309 | data.setVar('_task_graph', task_graph, d) |
308 | if not os.access(stampfile, os.F_OK): | 310 | return (task_graph, data.getVar('STAMP', d, 1), None) |
309 | return 0 | ||
310 | |||
311 | if checkdeps == 0: | ||
312 | return 1 | ||
313 | |||
314 | import stat | ||
315 | tasktime = os.stat(stampfile)[stat.ST_MTIME] | ||
316 | |||
317 | _deps = [] | ||
318 | def checkStamp(graph, task): | ||
319 | # check for existance | ||
320 | if 'nostamp' in dataCache.task_deps[file_name] and task in dataCache.task_deps[file_name]['nostamp']: | ||
321 | return 1 | ||
322 | |||
323 | if not stamp_is_current_cache(dataCache, file_name, task, 0): | ||
324 | return 0 | ||
325 | |||
326 | depfile = "%s.%s" % (dataCache.stamp[file_name], task) | ||
327 | deptime = os.stat(depfile)[stat.ST_MTIME] | ||
328 | if deptime > tasktime: | ||
329 | return 0 | ||
330 | return 1 | ||
331 | 311 | ||
332 | return task_graph.walkdown(task, checkStamp) | 312 | def extract_stamp(d, fn): |
313 | """ | ||
314 | Extracts stamp format which is either a data dictonary (fn unset) | ||
315 | or a dataCache entry (fn set). | ||
316 | """ | ||
317 | if fn: | ||
318 | return d.stamp[fn] | ||
319 | return data.getVar('STAMP', d, 1) | ||
333 | 320 | ||
334 | def stamp_is_current(task, d, checkdeps = 1): | 321 | def stamp_is_current(task, d, file_name = None, checkdeps = 1): |
335 | """ | 322 | """ |
336 | Check status of a given task's stamp. | 323 | Check status of a given task's stamp. |
337 | Returns 0 if it is not current and needs updating. | 324 | Returns 0 if it is not current and needs updating. |
325 | (d can be a data dict or dataCache) | ||
338 | """ | 326 | """ |
339 | task_graph = data.getVar('_task_graph', d) | 327 | |
340 | if not task_graph: | 328 | (task_graph, stampfn, taskdep) = extract_stamp_data(d, file_name) |
341 | task_graph = bb.digraph() | 329 | |
342 | data.setVar('_task_graph', task_graph, d) | 330 | if not stampfn: |
343 | stamp = data.getVar('STAMP', d) | ||
344 | if not stamp: | ||
345 | return 0 | 331 | return 0 |
346 | stampfile = "%s.%s" % (data.expand(stamp, d), task) | 332 | |
333 | stampfile = "%s.%s" % (stampfn, task) | ||
347 | if not os.access(stampfile, os.F_OK): | 334 | if not os.access(stampfile, os.F_OK): |
348 | return 0 | 335 | return 0 |
349 | 336 | ||
@@ -356,13 +343,17 @@ def stamp_is_current(task, d, checkdeps = 1): | |||
356 | _deps = [] | 343 | _deps = [] |
357 | def checkStamp(graph, task): | 344 | def checkStamp(graph, task): |
358 | # check for existance | 345 | # check for existance |
359 | if data.getVarFlag(task, 'nostamp', d): | 346 | if file_name: |
360 | return 1 | 347 | if 'nostamp' in taskdep and task in taskdep['nostamp']: |
348 | return 1 | ||
349 | else: | ||
350 | if data.getVarFlag(task, 'nostamp', d): | ||
351 | return 1 | ||
361 | 352 | ||
362 | if not stamp_is_current(task, d, 0): | 353 | if not stamp_is_current(task, d, file_name, 0 ): |
363 | return 0 | 354 | return 0 |
364 | 355 | ||
365 | depfile = "%s.%s" % (data.expand(stamp, d), task) | 356 | depfile = "%s.%s" % (stampfn, task) |
366 | deptime = os.stat(depfile)[stat.ST_MTIME] | 357 | deptime = os.stat(depfile)[stat.ST_MTIME] |
367 | if deptime > tasktime: | 358 | if deptime > tasktime: |
368 | return 0 | 359 | return 0 |
@@ -370,24 +361,40 @@ def stamp_is_current(task, d, checkdeps = 1): | |||
370 | 361 | ||
371 | return task_graph.walkdown(task, checkStamp) | 362 | return task_graph.walkdown(task, checkStamp) |
372 | 363 | ||
373 | 364 | def stamp_internal(task, d, file_name): | |
374 | def md5_is_current(task): | 365 | """ |
375 | """Check if a md5 file for a given task is current""" | 366 | Internal stamp helper function |
376 | 367 | Removes any stamp for the given task | |
377 | 368 | Makes sure the stamp directory exists | |
378 | def mkstamp(task, d): | 369 | Returns the stamp path+filename |
379 | """Creates/updates a stamp for a given task""" | 370 | """ |
380 | stamp = data.getVar('STAMP', d) | 371 | stamp = extract_stamp(d, file_name) |
381 | if not stamp: | 372 | if not stamp: |
382 | return | 373 | return |
383 | stamp = "%s.%s" % (data.expand(stamp, d), task) | 374 | stamp = "%s.%s" % (stamp, task) |
384 | mkdirhier(os.path.dirname(stamp)) | 375 | mkdirhier(os.path.dirname(stamp)) |
385 | # Remove the file and recreate to force timestamp | 376 | # Remove the file and recreate to force timestamp |
386 | # change on broken NFS filesystems | 377 | # change on broken NFS filesystems |
387 | if os.access(stamp, os.F_OK): | 378 | if os.access(stamp, os.F_OK): |
388 | os.remove(stamp) | 379 | os.remove(stamp) |
389 | f = open(stamp, "w") | 380 | return stamp |
390 | f.close() | 381 | |
382 | def make_stamp(task, d, file_name = None): | ||
383 | """ | ||
384 | Creates/updates a stamp for a given task | ||
385 | (d can be a data dict or dataCache) | ||
386 | """ | ||
387 | stamp = stamp_internal(task, d, file_name) | ||
388 | if stamp: | ||
389 | f = open(stamp, "w") | ||
390 | f.close() | ||
391 | |||
392 | def del_stamp(task, d, file_name = None): | ||
393 | """ | ||
394 | Removes a stamp for a given task | ||
395 | (d can be a data dict or dataCache) | ||
396 | """ | ||
397 | stamp_internal(task, d, file_name) | ||
391 | 398 | ||
392 | def add_task(task, deps, d): | 399 | def add_task(task, deps, d): |
393 | task_graph = data.getVar('_task_graph', d) | 400 | task_graph = data.getVar('_task_graph', d) |
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index 05c42518a7..934d230e6a 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py | |||
@@ -1,10 +1,9 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | # |
5 | BitBake 'Event' implementation | 4 | # BitBake 'Event' implementation |
6 | 5 | # | |
7 | Caching of bitbake variables before task execution | 6 | # Caching of bitbake variables before task execution |
8 | 7 | ||
9 | # Copyright (C) 2006 Richard Purdie | 8 | # Copyright (C) 2006 Richard Purdie |
10 | 9 | ||
@@ -14,21 +13,20 @@ Caching of bitbake variables before task execution | |||
14 | # Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer | 13 | # Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer |
15 | # Copyright (C) 2005 Holger Hans Peter Freyther | 14 | # Copyright (C) 2005 Holger Hans Peter Freyther |
16 | # Copyright (C) 2005 ROAD GmbH | 15 | # Copyright (C) 2005 ROAD GmbH |
16 | # | ||
17 | # This program is free software; you can redistribute it and/or modify | ||
18 | # it under the terms of the GNU General Public License version 2 as | ||
19 | # published by the Free Software Foundation. | ||
20 | # | ||
21 | # This program is distributed in the hope that it will be useful, | ||
22 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | # GNU General Public License for more details. | ||
25 | # | ||
26 | # You should have received a copy of the GNU General Public License along | ||
27 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
17 | 29 | ||
18 | This program is free software; you can redistribute it and/or modify it under | ||
19 | the terms of the GNU General Public License as published by the Free Software | ||
20 | Foundation; either version 2 of the License, or (at your option) any later | ||
21 | version. | ||
22 | |||
23 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
24 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
25 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
26 | |||
27 | You should have received a copy of the GNU General Public License along with | ||
28 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
29 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
30 | |||
31 | """ | ||
32 | 30 | ||
33 | import os, re | 31 | import os, re |
34 | import bb.data | 32 | import bb.data |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py new file mode 100644 index 0000000000..8a9c588633 --- /dev/null +++ b/bitbake/lib/bb/cooker.py | |||
@@ -0,0 +1,665 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | ||
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | ||
4 | # | ||
5 | # Copyright (C) 2003, 2004 Chris Larson | ||
6 | # Copyright (C) 2003, 2004 Phil Blundell | ||
7 | # Copyright (C) 2003 - 2005 Michael 'Mickey' Lauer | ||
8 | # Copyright (C) 2005 Holger Hans Peter Freyther | ||
9 | # Copyright (C) 2005 ROAD GmbH | ||
10 | # Copyright (C) 2006 Richard Purdie | ||
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | |||
25 | import sys, os, getopt, glob, copy, os.path, re, time | ||
26 | import bb | ||
27 | from bb import utils, data, parse, event, cache, providers, taskdata, runqueue | ||
28 | from sets import Set | ||
29 | import itertools | ||
30 | |||
31 | parsespin = itertools.cycle( r'|/-\\' ) | ||
32 | |||
33 | #============================================================================# | ||
34 | # BBStatistics | ||
35 | #============================================================================# | ||
36 | class BBStatistics: | ||
37 | """ | ||
38 | Manage build statistics for one run | ||
39 | """ | ||
40 | def __init__(self ): | ||
41 | self.attempt = 0 | ||
42 | self.success = 0 | ||
43 | self.fail = 0 | ||
44 | self.deps = 0 | ||
45 | |||
46 | def show( self ): | ||
47 | print "Build statistics:" | ||
48 | print " Attempted builds: %d" % self.attempt | ||
49 | if self.fail: | ||
50 | print " Failed builds: %d" % self.fail | ||
51 | if self.deps: | ||
52 | print " Dependencies not satisfied: %d" % self.deps | ||
53 | if self.fail or self.deps: return 1 | ||
54 | else: return 0 | ||
55 | |||
56 | #============================================================================# | ||
57 | # BBCooker | ||
58 | #============================================================================# | ||
59 | class BBCooker: | ||
60 | """ | ||
61 | Manages one bitbake build run | ||
62 | """ | ||
63 | |||
64 | Statistics = BBStatistics # make it visible from the shell | ||
65 | |||
66 | def __init__( self ): | ||
67 | self.build_cache_fail = [] | ||
68 | self.build_cache = [] | ||
69 | self.stats = BBStatistics() | ||
70 | self.status = None | ||
71 | |||
72 | self.cache = None | ||
73 | self.bb_cache = None | ||
74 | |||
75 | def tryBuildPackage(self, fn, item, task, the_data, build_depends): | ||
76 | """ | ||
77 | Build one task of a package, optionally build following task depends | ||
78 | """ | ||
79 | bb.event.fire(bb.event.PkgStarted(item, the_data)) | ||
80 | try: | ||
81 | self.stats.attempt += 1 | ||
82 | if not build_depends: | ||
83 | bb.data.setVarFlag('do_%s' % task, 'dontrundeps', 1, the_data) | ||
84 | if not self.configuration.dry_run: | ||
85 | bb.build.exec_task('do_%s' % task, the_data) | ||
86 | bb.event.fire(bb.event.PkgSucceeded(item, the_data)) | ||
87 | self.build_cache.append(fn) | ||
88 | return True | ||
89 | except bb.build.FuncFailed: | ||
90 | self.stats.fail += 1 | ||
91 | bb.msg.error(bb.msg.domain.Build, "task stack execution failed") | ||
92 | bb.event.fire(bb.event.PkgFailed(item, the_data)) | ||
93 | self.build_cache_fail.append(fn) | ||
94 | raise | ||
95 | except bb.build.EventException, e: | ||
96 | self.stats.fail += 1 | ||
97 | event = e.args[1] | ||
98 | bb.msg.error(bb.msg.domain.Build, "%s event exception, aborting" % bb.event.getName(event)) | ||
99 | bb.event.fire(bb.event.PkgFailed(item, the_data)) | ||
100 | self.build_cache_fail.append(fn) | ||
101 | raise | ||
102 | |||
103 | def tryBuild( self, fn, build_depends): | ||
104 | """ | ||
105 | Build a provider and its dependencies. | ||
106 | build_depends is a list of previous build dependencies (not runtime) | ||
107 | If build_depends is empty, we're dealing with a runtime depends | ||
108 | """ | ||
109 | |||
110 | the_data = self.bb_cache.loadDataFull(fn, self.configuration.data) | ||
111 | |||
112 | item = self.status.pkg_fn[fn] | ||
113 | |||
114 | if bb.build.stamp_is_current('do_%s' % self.configuration.cmd, the_data): | ||
115 | self.build_cache.append(fn) | ||
116 | return True | ||
117 | |||
118 | return self.tryBuildPackage(fn, item, self.configuration.cmd, the_data, build_depends) | ||
119 | |||
120 | def showVersions( self ): | ||
121 | pkg_pn = self.status.pkg_pn | ||
122 | preferred_versions = {} | ||
123 | latest_versions = {} | ||
124 | |||
125 | # Sort by priority | ||
126 | for pn in pkg_pn.keys(): | ||
127 | (last_ver,last_file,pref_ver,pref_file) = bb.providers.findBestProvider(pn, self.configuration.data, self.status) | ||
128 | preferred_versions[pn] = (pref_ver, pref_file) | ||
129 | latest_versions[pn] = (last_ver, last_file) | ||
130 | |||
131 | pkg_list = pkg_pn.keys() | ||
132 | pkg_list.sort() | ||
133 | |||
134 | for p in pkg_list: | ||
135 | pref = preferred_versions[p] | ||
136 | latest = latest_versions[p] | ||
137 | |||
138 | if pref != latest: | ||
139 | prefstr = pref[0][0] + "-" + pref[0][1] | ||
140 | else: | ||
141 | prefstr = "" | ||
142 | |||
143 | print "%-30s %20s %20s" % (p, latest[0][0] + "-" + latest[0][1], | ||
144 | prefstr) | ||
145 | |||
146 | |||
147 | def showEnvironment( self ): | ||
148 | """Show the outer or per-package environment""" | ||
149 | if self.configuration.buildfile: | ||
150 | self.cb = None | ||
151 | self.bb_cache = bb.cache.init(self) | ||
152 | try: | ||
153 | self.configuration.data = self.bb_cache.loadDataFull(self.configuration.buildfile, self.configuration.data) | ||
154 | except IOError, e: | ||
155 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % ( self.configuration.buildfile, e )) | ||
156 | except Exception, e: | ||
157 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) | ||
158 | # emit variables and shell functions | ||
159 | try: | ||
160 | data.update_data( self.configuration.data ) | ||
161 | data.emit_env(sys.__stdout__, self.configuration.data, True) | ||
162 | except Exception, e: | ||
163 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) | ||
164 | # emit the metadata which isnt valid shell | ||
165 | data.expandKeys( self.configuration.data ) | ||
166 | for e in self.configuration.data.keys(): | ||
167 | if data.getVarFlag( e, 'python', self.configuration.data ): | ||
168 | sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, data.getVar(e, self.configuration.data, 1))) | ||
169 | |||
170 | def generateDotGraph( self, pkgs_to_build, ignore_deps ): | ||
171 | """ | ||
172 | Generate a task dependency graph. | ||
173 | |||
174 | pkgs_to_build A list of packages that needs to be built | ||
175 | ignore_deps A list of names where processing of dependencies | ||
176 | should be stopped. e.g. dependencies that get | ||
177 | """ | ||
178 | |||
179 | for dep in ignore_deps: | ||
180 | self.status.ignored_dependencies.add(dep) | ||
181 | |||
182 | localdata = data.createCopy(self.configuration.data) | ||
183 | bb.data.update_data(localdata) | ||
184 | bb.data.expandKeys(localdata) | ||
185 | taskdata = bb.taskdata.TaskData(self.configuration.abort) | ||
186 | |||
187 | runlist = [] | ||
188 | try: | ||
189 | for k in pkgs_to_build: | ||
190 | taskdata.add_provider(localdata, self.status, k) | ||
191 | runlist.append([k, "do_%s" % self.configuration.cmd]) | ||
192 | taskdata.add_unresolved(localdata, self.status) | ||
193 | except bb.providers.NoProvider: | ||
194 | sys.exit(1) | ||
195 | rq = bb.runqueue.RunQueue() | ||
196 | rq.prepare_runqueue(self, self.configuration.data, self.status, taskdata, runlist) | ||
197 | |||
198 | seen_fnids = [] | ||
199 | depends_file = file('depends.dot', 'w' ) | ||
200 | tdepends_file = file('task-depends.dot', 'w' ) | ||
201 | print >> depends_file, "digraph depends {" | ||
202 | print >> tdepends_file, "digraph depends {" | ||
203 | rq.prio_map.reverse() | ||
204 | for task1 in range(len(rq.runq_fnid)): | ||
205 | task = rq.prio_map[task1] | ||
206 | taskname = rq.runq_task[task] | ||
207 | fnid = rq.runq_fnid[task] | ||
208 | fn = taskdata.fn_index[fnid] | ||
209 | pn = self.status.pkg_fn[fn] | ||
210 | version = self.bb_cache.getVar('PV', fn, True ) + '-' + self.bb_cache.getVar('PR', fn, True) | ||
211 | print >> tdepends_file, '"%s.%s" [label="%s %s\\n%s\\n%s"]' % (pn, taskname, pn, taskname, version, fn) | ||
212 | for dep in rq.runq_depends[task]: | ||
213 | depfn = taskdata.fn_index[rq.runq_fnid[dep]] | ||
214 | deppn = self.status.pkg_fn[depfn] | ||
215 | print >> tdepends_file, '"%s.%s" -> "%s.%s"' % (pn, rq.runq_task[task], deppn, rq.runq_task[dep]) | ||
216 | if fnid not in seen_fnids: | ||
217 | seen_fnids.append(fnid) | ||
218 | packages = [] | ||
219 | print >> depends_file, '"%s" [label="%s %s\\n%s"]' % (pn, pn, version, fn) | ||
220 | for depend in self.status.deps[fn]: | ||
221 | print >> depends_file, '"%s" -> "%s"' % (pn, depend) | ||
222 | rdepends = self.status.rundeps[fn] | ||
223 | for package in rdepends: | ||
224 | for rdepend in rdepends[package]: | ||
225 | print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend) | ||
226 | packages.append(package) | ||
227 | rrecs = self.status.runrecs[fn] | ||
228 | for package in rrecs: | ||
229 | for rdepend in rrecs[package]: | ||
230 | print >> depends_file, '"%s" -> "%s" [style=dashed]' % (package, rdepend) | ||
231 | if not package in packages: | ||
232 | packages.append(package) | ||
233 | for package in packages: | ||
234 | if package != pn: | ||
235 | print >> depends_file, '"%s" [label="%s(%s) %s\\n%s"]' % (package, package, pn, version, fn) | ||
236 | for depend in self.status.deps[fn]: | ||
237 | print >> depends_file, '"%s" -> "%s"' % (package, depend) | ||
238 | # Prints a flattened form of the above where subpackages of a package are merged into the main pn | ||
239 | #print >> depends_file, '"%s" [label="%s %s\\n%s\\n%s"]' % (pn, pn, taskname, version, fn) | ||
240 | #for rdep in taskdata.rdepids[fnid]: | ||
241 | # print >> depends_file, '"%s" -> "%s" [style=dashed]' % (pn, taskdata.run_names_index[rdep]) | ||
242 | #for dep in taskdata.depids[fnid]: | ||
243 | # print >> depends_file, '"%s" -> "%s"' % (pn, taskdata.build_names_index[dep]) | ||
244 | print >> depends_file, "}" | ||
245 | print >> tdepends_file, "}" | ||
246 | bb.msg.note(1, bb.msg.domain.Collection, "Dependencies saved to 'depends.dot'") | ||
247 | bb.msg.note(1, bb.msg.domain.Collection, "Task dependencies saved to 'task-depends.dot'") | ||
248 | |||
249 | def buildDepgraph( self ): | ||
250 | all_depends = self.status.all_depends | ||
251 | pn_provides = self.status.pn_provides | ||
252 | |||
253 | localdata = data.createCopy(self.configuration.data) | ||
254 | bb.data.update_data(localdata) | ||
255 | bb.data.expandKeys(localdata) | ||
256 | |||
257 | def calc_bbfile_priority(filename): | ||
258 | for (regex, pri) in self.status.bbfile_config_priorities: | ||
259 | if regex.match(filename): | ||
260 | return pri | ||
261 | return 0 | ||
262 | |||
263 | # Handle PREFERRED_PROVIDERS | ||
264 | for p in (bb.data.getVar('PREFERRED_PROVIDERS', localdata, 1) or "").split(): | ||
265 | (providee, provider) = p.split(':') | ||
266 | if providee in self.status.preferred and self.status.preferred[providee] != provider: | ||
267 | bb.msg.error(bb.msg.domain.Provider, "conflicting preferences for %s: both %s and %s specified" % (providee, provider, self.status.preferred[providee])) | ||
268 | self.status.preferred[providee] = provider | ||
269 | |||
270 | # Calculate priorities for each file | ||
271 | for p in self.status.pkg_fn.keys(): | ||
272 | self.status.bbfile_priority[p] = calc_bbfile_priority(p) | ||
273 | |||
274 | def buildWorldTargetList(self): | ||
275 | """ | ||
276 | Build package list for "bitbake world" | ||
277 | """ | ||
278 | all_depends = self.status.all_depends | ||
279 | pn_provides = self.status.pn_provides | ||
280 | bb.msg.debug(1, bb.msg.domain.Parsing, "collating packages for \"world\"") | ||
281 | for f in self.status.possible_world: | ||
282 | terminal = True | ||
283 | pn = self.status.pkg_fn[f] | ||
284 | |||
285 | for p in pn_provides[pn]: | ||
286 | if p.startswith('virtual/'): | ||
287 | bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to %s provider starting with virtual/" % (f, p)) | ||
288 | terminal = False | ||
289 | break | ||
290 | for pf in self.status.providers[p]: | ||
291 | if self.status.pkg_fn[pf] != pn: | ||
292 | bb.msg.debug(2, bb.msg.domain.Parsing, "World build skipping %s due to both us and %s providing %s" % (f, pf, p)) | ||
293 | terminal = False | ||
294 | break | ||
295 | if terminal: | ||
296 | self.status.world_target.add(pn) | ||
297 | |||
298 | # drop reference count now | ||
299 | self.status.possible_world = None | ||
300 | self.status.all_depends = None | ||
301 | |||
302 | def myProgressCallback( self, x, y, f, from_cache ): | ||
303 | """Update any tty with the progress change""" | ||
304 | if os.isatty(sys.stdout.fileno()): | ||
305 | sys.stdout.write("\rNOTE: Handling BitBake files: %s (%04d/%04d) [%2d %%]" % ( parsespin.next(), x, y, x*100/y ) ) | ||
306 | sys.stdout.flush() | ||
307 | else: | ||
308 | if x == 1: | ||
309 | sys.stdout.write("Parsing .bb files, please wait...") | ||
310 | sys.stdout.flush() | ||
311 | if x == y: | ||
312 | sys.stdout.write("done.") | ||
313 | sys.stdout.flush() | ||
314 | |||
315 | def interactiveMode( self ): | ||
316 | """Drop off into a shell""" | ||
317 | try: | ||
318 | from bb import shell | ||
319 | except ImportError, details: | ||
320 | bb.msg.fatal(bb.msg.domain.Parsing, "Sorry, shell not available (%s)" % details ) | ||
321 | else: | ||
322 | bb.data.update_data( self.configuration.data ) | ||
323 | bb.data.expandKeys( self.configuration.data ) | ||
324 | shell.start( self ) | ||
325 | sys.exit( 0 ) | ||
326 | |||
327 | def parseConfigurationFile( self, afile ): | ||
328 | try: | ||
329 | self.configuration.data = bb.parse.handle( afile, self.configuration.data ) | ||
330 | |||
331 | # Add the handlers we inherited by INHERIT | ||
332 | # we need to do this manually as it is not guranteed | ||
333 | # we will pick up these classes... as we only INHERIT | ||
334 | # on .inc and .bb files but not on .conf | ||
335 | data = bb.data.createCopy( self.configuration.data ) | ||
336 | inherits = ["base"] + (bb.data.getVar('INHERIT', data, True ) or "").split() | ||
337 | for inherit in inherits: | ||
338 | data = bb.parse.handle( os.path.join('classes', '%s.bbclass' % inherit ), data, True ) | ||
339 | |||
340 | # FIXME: This assumes that we included at least one .inc file | ||
341 | for var in bb.data.keys(data): | ||
342 | if bb.data.getVarFlag(var, 'handler', data): | ||
343 | bb.event.register(var,bb.data.getVar(var, data)) | ||
344 | |||
345 | except IOError: | ||
346 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to open %s" % afile ) | ||
347 | except bb.parse.ParseError, details: | ||
348 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to parse %s (%s)" % (afile, details) ) | ||
349 | |||
350 | def handleCollections( self, collections ): | ||
351 | """Handle collections""" | ||
352 | if collections: | ||
353 | collection_list = collections.split() | ||
354 | for c in collection_list: | ||
355 | regex = bb.data.getVar("BBFILE_PATTERN_%s" % c, self.configuration.data, 1) | ||
356 | if regex == None: | ||
357 | bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s not defined" % c) | ||
358 | continue | ||
359 | priority = bb.data.getVar("BBFILE_PRIORITY_%s" % c, self.configuration.data, 1) | ||
360 | if priority == None: | ||
361 | bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PRIORITY_%s not defined" % c) | ||
362 | continue | ||
363 | try: | ||
364 | cre = re.compile(regex) | ||
365 | except re.error: | ||
366 | bb.msg.error(bb.msg.domain.Parsing, "BBFILE_PATTERN_%s \"%s\" is not a valid regular expression" % (c, regex)) | ||
367 | continue | ||
368 | try: | ||
369 | pri = int(priority) | ||
370 | self.status.bbfile_config_priorities.append((cre, pri)) | ||
371 | except ValueError: | ||
372 | bb.msg.error(bb.msg.domain.Parsing, "invalid value for BBFILE_PRIORITY_%s: \"%s\"" % (c, priority)) | ||
373 | |||
374 | |||
375 | def cook(self, configuration): | ||
376 | """ | ||
377 | We are building stuff here. We do the building | ||
378 | from here. By default we try to execute task | ||
379 | build. | ||
380 | """ | ||
381 | |||
382 | self.configuration = configuration | ||
383 | |||
384 | if self.configuration.verbose: | ||
385 | bb.msg.set_verbose(True) | ||
386 | |||
387 | if self.configuration.debug: | ||
388 | bb.msg.set_debug_level(self.configuration.debug) | ||
389 | else: | ||
390 | bb.msg.set_debug_level(0) | ||
391 | |||
392 | if self.configuration.debug_domains: | ||
393 | bb.msg.set_debug_domains(self.configuration.debug_domains) | ||
394 | |||
395 | self.configuration.data = bb.data.init() | ||
396 | |||
397 | for f in self.configuration.file: | ||
398 | self.parseConfigurationFile( f ) | ||
399 | |||
400 | self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) ) | ||
401 | |||
402 | if not self.configuration.cmd: | ||
403 | self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data) or "build" | ||
404 | |||
405 | # | ||
406 | # Special updated configuration we use for firing events | ||
407 | # | ||
408 | self.configuration.event_data = bb.data.createCopy(self.configuration.data) | ||
409 | bb.data.update_data(self.configuration.event_data) | ||
410 | |||
411 | if self.configuration.show_environment: | ||
412 | self.showEnvironment() | ||
413 | sys.exit( 0 ) | ||
414 | |||
415 | # inject custom variables | ||
416 | if not bb.data.getVar("BUILDNAME", self.configuration.data): | ||
417 | bb.data.setVar("BUILDNAME", os.popen('date +%Y%m%d%H%M').readline().strip(), self.configuration.data) | ||
418 | bb.data.setVar("BUILDSTART", time.strftime('%m/%d/%Y %H:%M:%S',time.gmtime()),self.configuration.data) | ||
419 | |||
420 | buildname = bb.data.getVar("BUILDNAME", self.configuration.data) | ||
421 | |||
422 | if self.configuration.interactive: | ||
423 | self.interactiveMode() | ||
424 | |||
425 | if self.configuration.buildfile is not None: | ||
426 | bf = os.path.abspath( self.configuration.buildfile ) | ||
427 | try: | ||
428 | os.stat(bf) | ||
429 | except OSError: | ||
430 | (filelist, masked) = self.collect_bbfiles() | ||
431 | regexp = re.compile(self.configuration.buildfile) | ||
432 | matches = [] | ||
433 | for f in filelist: | ||
434 | if regexp.search(f) and os.path.isfile(f): | ||
435 | bf = f | ||
436 | matches.append(f) | ||
437 | if len(matches) != 1: | ||
438 | bb.msg.error(bb.msg.domain.Parsing, "Unable to match %s (%s matches found):" % (self.configuration.buildfile, len(matches))) | ||
439 | for f in matches: | ||
440 | bb.msg.error(bb.msg.domain.Parsing, " %s" % f) | ||
441 | sys.exit(1) | ||
442 | bf = matches[0] | ||
443 | |||
444 | bbfile_data = bb.parse.handle(bf, self.configuration.data) | ||
445 | |||
446 | # Remove stamp for target if force mode active | ||
447 | if self.configuration.force: | ||
448 | bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (self.configuration.cmd, bf)) | ||
449 | bb.build.del_stamp('do_%s' % self.configuration.cmd, bbfile_data) | ||
450 | |||
451 | item = bb.data.getVar('PN', bbfile_data, 1) | ||
452 | try: | ||
453 | self.tryBuildPackage(bf, item, self.configuration.cmd, bbfile_data, True) | ||
454 | except bb.build.EventException: | ||
455 | bb.msg.error(bb.msg.domain.Build, "Build of '%s' failed" % item ) | ||
456 | |||
457 | sys.exit( self.stats.show() ) | ||
458 | |||
459 | # initialise the parsing status now we know we will need deps | ||
460 | self.status = bb.cache.CacheData() | ||
461 | |||
462 | ignore = bb.data.getVar("ASSUME_PROVIDED", self.configuration.data, 1) or "" | ||
463 | self.status.ignored_dependencies = Set( ignore.split() ) | ||
464 | |||
465 | self.handleCollections( bb.data.getVar("BBFILE_COLLECTIONS", self.configuration.data, 1) ) | ||
466 | |||
467 | pkgs_to_build = self.configuration.pkgs_to_build | ||
468 | |||
469 | bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, 1) | ||
470 | if bbpkgs: | ||
471 | pkgs_to_build.extend(bbpkgs.split()) | ||
472 | if len(pkgs_to_build) == 0 and not self.configuration.show_versions \ | ||
473 | and not self.configuration.show_environment: | ||
474 | print "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help'" | ||
475 | print "for usage information." | ||
476 | sys.exit(0) | ||
477 | |||
478 | # Import Psyco if available and not disabled | ||
479 | if not self.configuration.disable_psyco: | ||
480 | try: | ||
481 | import psyco | ||
482 | except ImportError: | ||
483 | bb.msg.note(1, bb.msg.domain.Collection, "Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.") | ||
484 | else: | ||
485 | psyco.bind( self.parse_bbfiles ) | ||
486 | else: | ||
487 | bb.msg.note(1, bb.msg.domain.Collection, "You have disabled Psyco. This decreases performance.") | ||
488 | |||
489 | try: | ||
490 | bb.msg.debug(1, bb.msg.domain.Collection, "collecting .bb files") | ||
491 | (filelist, masked) = self.collect_bbfiles() | ||
492 | self.parse_bbfiles(filelist, masked, self.myProgressCallback) | ||
493 | bb.msg.debug(1, bb.msg.domain.Collection, "parsing complete") | ||
494 | |||
495 | if self.configuration.parse_only: | ||
496 | bb.msg.note(1, bb.msg.domain.Collection, "Requested parsing .bb files only. Exiting.") | ||
497 | return | ||
498 | |||
499 | |||
500 | self.buildDepgraph() | ||
501 | |||
502 | if self.configuration.show_versions: | ||
503 | self.showVersions() | ||
504 | sys.exit( 0 ) | ||
505 | if 'world' in pkgs_to_build: | ||
506 | self.buildWorldTargetList() | ||
507 | pkgs_to_build.remove('world') | ||
508 | for t in self.status.world_target: | ||
509 | pkgs_to_build.append(t) | ||
510 | |||
511 | if self.configuration.dot_graph: | ||
512 | self.generateDotGraph( pkgs_to_build, self.configuration.ignored_dot_deps ) | ||
513 | sys.exit( 0 ) | ||
514 | |||
515 | bb.event.fire(bb.event.BuildStarted(buildname, pkgs_to_build, self.configuration.event_data)) | ||
516 | |||
517 | localdata = data.createCopy(self.configuration.data) | ||
518 | bb.data.update_data(localdata) | ||
519 | bb.data.expandKeys(localdata) | ||
520 | |||
521 | taskdata = bb.taskdata.TaskData(self.configuration.abort) | ||
522 | |||
523 | runlist = [] | ||
524 | try: | ||
525 | for k in pkgs_to_build: | ||
526 | taskdata.add_provider(localdata, self.status, k) | ||
527 | runlist.append([k, "do_%s" % self.configuration.cmd]) | ||
528 | taskdata.add_unresolved(localdata, self.status) | ||
529 | except bb.providers.NoProvider: | ||
530 | sys.exit(1) | ||
531 | |||
532 | rq = bb.runqueue.RunQueue() | ||
533 | rq.prepare_runqueue(self, self.configuration.data, self.status, taskdata, runlist) | ||
534 | try: | ||
535 | failures = rq.execute_runqueue(self, self.configuration.data, self.status, taskdata, runlist) | ||
536 | except runqueue.TaskFailure, fnids: | ||
537 | for fnid in fnids: | ||
538 | bb.msg.error(bb.msg.domain.Build, "'%s' failed" % taskdata.fn_index[fnid]) | ||
539 | sys.exit(1) | ||
540 | bb.event.fire(bb.event.BuildCompleted(buildname, pkgs_to_build, self.configuration.event_data, failures)) | ||
541 | |||
542 | sys.exit( self.stats.show() ) | ||
543 | |||
544 | except KeyboardInterrupt: | ||
545 | bb.msg.note(1, bb.msg.domain.Collection, "KeyboardInterrupt - Build not completed.") | ||
546 | sys.exit(1) | ||
547 | |||
548 | def get_bbfiles( self, path = os.getcwd() ): | ||
549 | """Get list of default .bb files by reading out the current directory""" | ||
550 | contents = os.listdir(path) | ||
551 | bbfiles = [] | ||
552 | for f in contents: | ||
553 | (root, ext) = os.path.splitext(f) | ||
554 | if ext == ".bb": | ||
555 | bbfiles.append(os.path.abspath(os.path.join(os.getcwd(),f))) | ||
556 | return bbfiles | ||
557 | |||
558 | def find_bbfiles( self, path ): | ||
559 | """Find all the .bb files in a directory (uses find)""" | ||
560 | findcmd = 'find ' + path + ' -name *.bb | grep -v SCCS/' | ||
561 | try: | ||
562 | finddata = os.popen(findcmd) | ||
563 | except OSError: | ||
564 | return [] | ||
565 | return finddata.readlines() | ||
566 | |||
567 | def collect_bbfiles( self ): | ||
568 | """Collect all available .bb build files""" | ||
569 | parsed, cached, skipped, masked = 0, 0, 0, 0 | ||
570 | self.bb_cache = bb.cache.init(self) | ||
571 | |||
572 | files = (data.getVar( "BBFILES", self.configuration.data, 1 ) or "").split() | ||
573 | data.setVar("BBFILES", " ".join(files), self.configuration.data) | ||
574 | |||
575 | if not len(files): | ||
576 | files = self.get_bbfiles() | ||
577 | |||
578 | if not len(files): | ||
579 | bb.msg.error(bb.msg.domain.Collection, "no files to build.") | ||
580 | |||
581 | newfiles = [] | ||
582 | for f in files: | ||
583 | if os.path.isdir(f): | ||
584 | dirfiles = self.find_bbfiles(f) | ||
585 | if dirfiles: | ||
586 | newfiles += dirfiles | ||
587 | continue | ||
588 | newfiles += glob.glob(f) or [ f ] | ||
589 | |||
590 | bbmask = bb.data.getVar('BBMASK', self.configuration.data, 1) | ||
591 | |||
592 | if not bbmask: | ||
593 | return (newfiles, 0) | ||
594 | |||
595 | try: | ||
596 | bbmask_compiled = re.compile(bbmask) | ||
597 | except sre_constants.error: | ||
598 | bb.msg.fatal(bb.msg.domain.Collection, "BBMASK is not a valid regular expression.") | ||
599 | |||
600 | finalfiles = [] | ||
601 | for i in xrange( len( newfiles ) ): | ||
602 | f = newfiles[i] | ||
603 | if bbmask and bbmask_compiled.search(f): | ||
604 | bb.msg.debug(1, bb.msg.domain.Collection, "skipping masked file %s" % f) | ||
605 | masked += 1 | ||
606 | continue | ||
607 | finalfiles.append(f) | ||
608 | |||
609 | return (finalfiles, masked) | ||
610 | |||
611 | def parse_bbfiles(self, filelist, masked, progressCallback = None): | ||
612 | parsed, cached, skipped = 0, 0, 0 | ||
613 | for i in xrange( len( filelist ) ): | ||
614 | f = filelist[i] | ||
615 | |||
616 | bb.msg.debug(1, bb.msg.domain.Collection, "parsing %s" % f) | ||
617 | |||
618 | # read a file's metadata | ||
619 | try: | ||
620 | fromCache, skip = self.bb_cache.loadData(f, self.configuration.data) | ||
621 | if skip: | ||
622 | skipped += 1 | ||
623 | bb.msg.debug(2, bb.msg.domain.Collection, "skipping %s" % f) | ||
624 | self.bb_cache.skip(f) | ||
625 | continue | ||
626 | elif fromCache: cached += 1 | ||
627 | else: parsed += 1 | ||
628 | deps = None | ||
629 | |||
630 | # Disabled by RP as was no longer functional | ||
631 | # allow metadata files to add items to BBFILES | ||
632 | #data.update_data(self.pkgdata[f]) | ||
633 | #addbbfiles = self.bb_cache.getVar('BBFILES', f, False) or None | ||
634 | #if addbbfiles: | ||
635 | # for aof in addbbfiles.split(): | ||
636 | # if not files.count(aof): | ||
637 | # if not os.path.isabs(aof): | ||
638 | # aof = os.path.join(os.path.dirname(f),aof) | ||
639 | # files.append(aof) | ||
640 | |||
641 | self.bb_cache.handle_data(f, self.status) | ||
642 | |||
643 | # now inform the caller | ||
644 | if progressCallback is not None: | ||
645 | progressCallback( i + 1, len( filelist ), f, fromCache ) | ||
646 | |||
647 | except IOError, e: | ||
648 | self.bb_cache.remove(f) | ||
649 | bb.msg.error(bb.msg.domain.Collection, "opening %s: %s" % (f, e)) | ||
650 | pass | ||
651 | except KeyboardInterrupt: | ||
652 | self.bb_cache.sync() | ||
653 | raise | ||
654 | except Exception, e: | ||
655 | self.bb_cache.remove(f) | ||
656 | bb.msg.error(bb.msg.domain.Collection, "%s while parsing %s" % (e, f)) | ||
657 | except: | ||
658 | self.bb_cache.remove(f) | ||
659 | raise | ||
660 | |||
661 | if progressCallback is not None: | ||
662 | print "\r" # need newline after Handling Bitbake files message | ||
663 | bb.msg.note(1, bb.msg.domain.Collection, "Parsing finished. %d cached, %d parsed, %d skipped, %d masked." % ( cached, parsed, skipped, masked )) | ||
664 | |||
665 | self.bb_cache.sync() | ||
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 9f7e4be4c8..14f1d896d7 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -18,26 +17,26 @@ to have faster update_data and expandKeys operations. | |||
18 | 17 | ||
19 | This is a treade-off between speed and memory again but | 18 | This is a treade-off between speed and memory again but |
20 | the speed is more critical here. | 19 | the speed is more critical here. |
21 | |||
22 | Copyright (C) 2003, 2004 Chris Larson | ||
23 | Copyright (C) 2005 Holger Hans Peter Freyther | ||
24 | |||
25 | This program is free software; you can redistribute it and/or modify it under | ||
26 | the terms of the GNU General Public License as published by the Free Software | ||
27 | Foundation; either version 2 of the License, or (at your option) any later | ||
28 | version. | ||
29 | |||
30 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
31 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
32 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
33 | |||
34 | You should have received a copy of the GNU General Public License along with | ||
35 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
36 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
37 | |||
38 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
39 | """ | 20 | """ |
40 | 21 | ||
22 | # Copyright (C) 2003, 2004 Chris Larson | ||
23 | # Copyright (C) 2005 Holger Hans Peter Freyther | ||
24 | # | ||
25 | # This program is free software; you can redistribute it and/or modify | ||
26 | # it under the terms of the GNU General Public License version 2 as | ||
27 | # published by the Free Software Foundation. | ||
28 | # | ||
29 | # This program is distributed in the hope that it will be useful, | ||
30 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
31 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
32 | # GNU General Public License for more details. | ||
33 | # | ||
34 | # You should have received a copy of the GNU General Public License along | ||
35 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
36 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
37 | # | ||
38 | #Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
39 | |||
41 | import sys, os, re, time, types | 40 | import sys, os, re, time, types |
42 | if sys.argv[0][-5:] == "pydoc": | 41 | if sys.argv[0][-5:] == "pydoc": |
43 | path = os.path.dirname(os.path.dirname(sys.argv[1])) | 42 | path = os.path.dirname(os.path.dirname(sys.argv[1])) |
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index d63fdde3ef..ef1e9dda07 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -6,28 +6,28 @@ BitBake Smart Dictionary Implementation | |||
6 | Functions for interacting with the data structure used by the | 6 | Functions for interacting with the data structure used by the |
7 | BitBake build tools. | 7 | BitBake build tools. |
8 | 8 | ||
9 | Copyright (C) 2003, 2004 Chris Larson | ||
10 | Copyright (C) 2004, 2005 Seb Frankengul | ||
11 | Copyright (C) 2005, 2006 Holger Hans Peter Freyther | ||
12 | Copyright (C) 2005 Uli Luckas | ||
13 | Copyright (C) 2005 ROAD GmbH | ||
14 | |||
15 | This program is free software; you can redistribute it and/or modify it under | ||
16 | the terms of the GNU General Public License as published by the Free Software | ||
17 | Foundation; either version 2 of the License, or (at your option) any later | ||
18 | version. | ||
19 | |||
20 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
21 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
22 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
23 | |||
24 | You should have received a copy of the GNU General Public License along with | ||
25 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
26 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
27 | |||
28 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
29 | """ | 9 | """ |
30 | 10 | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # Copyright (C) 2004, 2005 Seb Frankengul | ||
13 | # Copyright (C) 2005, 2006 Holger Hans Peter Freyther | ||
14 | # Copyright (C) 2005 Uli Luckas | ||
15 | # Copyright (C) 2005 ROAD GmbH | ||
16 | # | ||
17 | # This program is free software; you can redistribute it and/or modify | ||
18 | # it under the terms of the GNU General Public License version 2 as | ||
19 | # published by the Free Software Foundation. | ||
20 | # | ||
21 | # This program is distributed in the hope that it will be useful, | ||
22 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | # GNU General Public License for more details. | ||
25 | # | ||
26 | # You should have received a copy of the GNU General Public License along | ||
27 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
29 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
30 | |||
31 | import copy, os, re, sys, time, types | 31 | import copy, os, re, sys, time, types |
32 | import bb | 32 | import bb |
33 | from bb import utils, methodpool | 33 | from bb import utils, methodpool |
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index b1d12177c4..f1da98fd45 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -6,23 +5,23 @@ BitBake 'Event' implementation | |||
6 | 5 | ||
7 | Classes and functions for manipulating 'events' in the | 6 | Classes and functions for manipulating 'events' in the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | |||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | """ | 8 | """ |
25 | 9 | ||
10 | # Copyright (C) 2003, 2004 Chris Larson | ||
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | |||
26 | import os, re | 25 | import os, re |
27 | import bb.data | 26 | import bb.data |
28 | import bb.utils | 27 | import bb.utils |
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index 3521ece76b..31a4adccb1 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -6,25 +5,25 @@ BitBake 'Fetch' implementations | |||
6 | 5 | ||
7 | Classes for obtaining upstream sources for the | 6 | Classes for obtaining upstream sources for the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | |||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 8 | """ |
27 | 9 | ||
10 | # Copyright (C) 2003, 2004 Chris Larson | ||
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | # | ||
25 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | |||
28 | import os, re | 27 | import os, re |
29 | import bb | 28 | import bb |
30 | from bb import data | 29 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/cvs.py b/bitbake/lib/bb/fetch/cvs.py index 3bdac177eb..bd3317166c 100644 --- a/bitbake/lib/bb/fetch/cvs.py +++ b/bitbake/lib/bb/fetch/cvs.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -7,24 +6,26 @@ BitBake 'Fetch' implementations | |||
7 | Classes for obtaining upstream sources for the | 6 | Classes for obtaining upstream sources for the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | 8 | ||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 9 | """ |
27 | 10 | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | # | ||
26 | #Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | # | ||
28 | |||
28 | import os, re | 29 | import os, re |
29 | import bb | 30 | import bb |
30 | from bb import data | 31 | from bb import data |
@@ -81,6 +82,10 @@ class Cvs(Fetch): | |||
81 | if "localdir" in ud.parm: | 82 | if "localdir" in ud.parm: |
82 | localdir = ud.parm["localdir"] | 83 | localdir = ud.parm["localdir"] |
83 | 84 | ||
85 | cvs_port = "" | ||
86 | if "port" in ud.parm: | ||
87 | cvs_port = ud.parm["port"] | ||
88 | |||
84 | cvs_rsh = None | 89 | cvs_rsh = None |
85 | if method == "ext": | 90 | if method == "ext": |
86 | if "rsh" in ud.parm: | 91 | if "rsh" in ud.parm: |
@@ -92,7 +97,7 @@ class Cvs(Fetch): | |||
92 | cvsroot = ":" + method + ":" + ud.user | 97 | cvsroot = ":" + method + ":" + ud.user |
93 | if ud.pswd: | 98 | if ud.pswd: |
94 | cvsroot += ":" + ud.pswd | 99 | cvsroot += ":" + ud.pswd |
95 | cvsroot += "@" + ud.host + ":" + ud.path | 100 | cvsroot += "@" + ud.host + ":" + cvs_port + ud.path |
96 | 101 | ||
97 | options = [] | 102 | options = [] |
98 | if ud.date: | 103 | if ud.date: |
diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py index bb517c9928..c0cd27df09 100644 --- a/bitbake/lib/bb/fetch/git.py +++ b/bitbake/lib/bb/fetch/git.py | |||
@@ -1,25 +1,25 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
5 | BitBake 'Fetch' git implementation | 4 | BitBake 'Fetch' git implementation |
6 | 5 | ||
7 | Copyright (C) 2005 Richard Purdie | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify it under | ||
10 | the terms of the GNU General Public License as published by the Free Software | ||
11 | Foundation; either version 2 of the License, or (at your option) any later | ||
12 | version. | ||
13 | |||
14 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
15 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
16 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
17 | |||
18 | You should have received a copy of the GNU General Public License along with | ||
19 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
20 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
21 | """ | 6 | """ |
22 | 7 | ||
8 | #Copyright (C) 2005 Richard Purdie | ||
9 | # | ||
10 | # This program is free software; you can redistribute it and/or modify | ||
11 | # it under the terms of the GNU General Public License version 2 as | ||
12 | # published by the Free Software Foundation. | ||
13 | # | ||
14 | # This program is distributed in the hope that it will be useful, | ||
15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | # GNU General Public License for more details. | ||
18 | # | ||
19 | # You should have received a copy of the GNU General Public License along | ||
20 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
21 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
22 | |||
23 | import os, re | 23 | import os, re |
24 | import bb | 24 | import bb |
25 | from bb import data | 25 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/local.py b/bitbake/lib/bb/fetch/local.py index 5224976704..9be8f1ce4b 100644 --- a/bitbake/lib/bb/fetch/local.py +++ b/bitbake/lib/bb/fetch/local.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -7,24 +6,25 @@ BitBake 'Fetch' implementations | |||
7 | Classes for obtaining upstream sources for the | 6 | Classes for obtaining upstream sources for the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | 8 | ||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 9 | """ |
27 | 10 | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | # | ||
26 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | |||
28 | import os, re | 28 | import os, re |
29 | import bb | 29 | import bb |
30 | from bb import data | 30 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/perforce.py b/bitbake/lib/bb/fetch/perforce.py index 88acf69951..125eb99aa6 100644 --- a/bitbake/lib/bb/fetch/perforce.py +++ b/bitbake/lib/bb/fetch/perforce.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -7,24 +6,25 @@ BitBake 'Fetch' implementations | |||
7 | Classes for obtaining upstream sources for the | 6 | Classes for obtaining upstream sources for the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | 8 | ||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 9 | """ |
27 | 10 | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | # | ||
26 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | |||
28 | import os, re | 28 | import os, re |
29 | import bb | 29 | import bb |
30 | from bb import data | 30 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/ssh.py b/bitbake/lib/bb/fetch/ssh.py index e5f69e33e7..81a9892dcc 100644 --- a/bitbake/lib/bb/fetch/ssh.py +++ b/bitbake/lib/bb/fetch/ssh.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | ''' | 3 | ''' |
@@ -11,29 +10,32 @@ IETF secsh internet draft: | |||
11 | Currently does not support the sftp parameters, as this uses scp | 10 | Currently does not support the sftp parameters, as this uses scp |
12 | Also does not support the 'fingerprint' connection parameter. | 11 | Also does not support the 'fingerprint' connection parameter. |
13 | 12 | ||
14 | Copyright (C) 2006 OpenedHand Ltd. | 13 | ''' |
15 | |||
16 | Based in part on svk.py: | ||
17 | Copyright (C) 2006 Holger Hans Peter Freyther | ||
18 | Based on svn.py: | ||
19 | Copyright (C) 2003, 2004 Chris Larson | ||
20 | Based on functions from the base bb module: | ||
21 | Copyright 2003 Holger Schurig | ||
22 | |||
23 | |||
24 | This program is free software; you can redistribute it and/or modify it under | ||
25 | the terms of the GNU General Public License as published by the Free Software | ||
26 | Foundation; either version 2 of the License, or (at your option) any later | ||
27 | version. | ||
28 | 14 | ||
29 | This program is distributed in the hope that it will be useful, but WITHOUT | 15 | # Copyright (C) 2006 OpenedHand Ltd. |
30 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 16 | # |
31 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 17 | # |
18 | # Based in part on svk.py: | ||
19 | # Copyright (C) 2006 Holger Hans Peter Freyther | ||
20 | # Based on svn.py: | ||
21 | # Copyright (C) 2003, 2004 Chris Larson | ||
22 | # Based on functions from the base bb module: | ||
23 | # Copyright 2003 Holger Schurig | ||
24 | # | ||
25 | # | ||
26 | # This program is free software; you can redistribute it and/or modify | ||
27 | # it under the terms of the GNU General Public License version 2 as | ||
28 | # published by the Free Software Foundation. | ||
29 | # | ||
30 | # This program is distributed in the hope that it will be useful, | ||
31 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
32 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
33 | # GNU General Public License for more details. | ||
34 | # | ||
35 | # You should have received a copy of the GNU General Public License along | ||
36 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
37 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
32 | 38 | ||
33 | You should have received a copy of the GNU General Public License along with | ||
34 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
35 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
36 | ''' | ||
37 | import re, os | 39 | import re, os |
38 | import bb | 40 | import bb |
39 | from bb import data | 41 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/svk.py b/bitbake/lib/bb/fetch/svk.py index 29270ab3d8..d863ccb6e0 100644 --- a/bitbake/lib/bb/fetch/svk.py +++ b/bitbake/lib/bb/fetch/svk.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -6,33 +5,26 @@ BitBake 'Fetch' implementations | |||
6 | 5 | ||
7 | This implementation is for svk. It is based on the svn implementation | 6 | This implementation is for svk. It is based on the svn implementation |
8 | 7 | ||
9 | Copyright (C) 2006 Holger Hans Peter Freyther | ||
10 | |||
11 | GPL and MIT licensed | ||
12 | |||
13 | |||
14 | |||
15 | Classes for obtaining upstream sources for the | ||
16 | BitBake build tools. | ||
17 | |||
18 | Copyright (C) 2003, 2004 Chris Larson | ||
19 | |||
20 | This program is free software; you can redistribute it and/or modify it under | ||
21 | the terms of the GNU General Public License as published by the Free Software | ||
22 | Foundation; either version 2 of the License, or (at your option) any later | ||
23 | version. | ||
24 | |||
25 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
26 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
27 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
28 | |||
29 | You should have received a copy of the GNU General Public License along with | ||
30 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
31 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
32 | |||
33 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
34 | """ | 8 | """ |
35 | 9 | ||
10 | # Copyright (C) 2006 Holger Hans Peter Freyther | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | # | ||
26 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | |||
36 | import os, re | 28 | import os, re |
37 | import bb | 29 | import bb |
38 | from bb import data | 30 | from bb import data |
diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py index ebd5bebab7..21be1412a6 100644 --- a/bitbake/lib/bb/fetch/svn.py +++ b/bitbake/lib/bb/fetch/svn.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -6,29 +5,29 @@ BitBake 'Fetch' implementations | |||
6 | 5 | ||
7 | This implementation is for svn. It is based on the cvs implementation. | 6 | This implementation is for svn. It is based on the cvs implementation. |
8 | 7 | ||
9 | Copyright (C) 2004 Marcin Juszkiewicz | ||
10 | |||
11 | Classes for obtaining upstream sources for the | ||
12 | BitBake build tools. | ||
13 | |||
14 | Copyright (C) 2003, 2004 Chris Larson | ||
15 | |||
16 | This program is free software; you can redistribute it and/or modify it under | ||
17 | the terms of the GNU General Public License as published by the Free Software | ||
18 | Foundation; either version 2 of the License, or (at your option) any later | ||
19 | version. | ||
20 | |||
21 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
22 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
23 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
24 | |||
25 | You should have received a copy of the GNU General Public License along with | ||
26 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
27 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
28 | |||
29 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
30 | """ | 8 | """ |
31 | 9 | ||
10 | # Copyright (C) 2004 Marcin Juszkiewicz | ||
11 | # | ||
12 | # Classes for obtaining upstream sources for the | ||
13 | # BitBake build tools. | ||
14 | # Copyright (C) 2003, 2004 Chris Larson | ||
15 | # | ||
16 | # This program is free software; you can redistribute it and/or modify | ||
17 | # it under the terms of the GNU General Public License version 2 as | ||
18 | # published by the Free Software Foundation. | ||
19 | # | ||
20 | # This program is distributed in the hope that it will be useful, | ||
21 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | # GNU General Public License for more details. | ||
24 | # | ||
25 | # You should have received a copy of the GNU General Public License along | ||
26 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
27 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
28 | # | ||
29 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
30 | |||
32 | import os, re | 31 | import os, re |
33 | import sys | 32 | import sys |
34 | import bb | 33 | import bb |
diff --git a/bitbake/lib/bb/fetch/wget.py b/bitbake/lib/bb/fetch/wget.py index 9c9c1675a1..2d590ad0b2 100644 --- a/bitbake/lib/bb/fetch/wget.py +++ b/bitbake/lib/bb/fetch/wget.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -7,24 +6,25 @@ BitBake 'Fetch' implementations | |||
7 | Classes for obtaining upstream sources for the | 6 | Classes for obtaining upstream sources for the |
8 | BitBake build tools. | 7 | BitBake build tools. |
9 | 8 | ||
10 | Copyright (C) 2003, 2004 Chris Larson | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 9 | """ |
27 | 10 | ||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | # | ||
26 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | |||
28 | import os, re | 28 | import os, re |
29 | import bb | 29 | import bb |
30 | from bb import data | 30 | from bb import data |
diff --git a/bitbake/lib/bb/manifest.py b/bitbake/lib/bb/manifest.py index 30bb454724..4e4b7d98ec 100644 --- a/bitbake/lib/bb/manifest.py +++ b/bitbake/lib/bb/manifest.py | |||
@@ -3,18 +3,18 @@ | |||
3 | # | 3 | # |
4 | # Copyright (C) 2003, 2004 Chris Larson | 4 | # Copyright (C) 2003, 2004 Chris Larson |
5 | # | 5 | # |
6 | # This program is free software; you can redistribute it and/or modify it under | 6 | # This program is free software; you can redistribute it and/or modify |
7 | # the terms of the GNU General Public License as published by the Free Software | 7 | # it under the terms of the GNU General Public License version 2 as |
8 | # Foundation; either version 2 of the License, or (at your option) any later | 8 | # published by the Free Software Foundation. |
9 | # version. | 9 | # |
10 | # | 10 | # This program is distributed in the hope that it will be useful, |
11 | # This program is distributed in the hope that it will be useful, but WITHOUT | 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 13 | # GNU General Public License for more details. |
14 | # | 14 | # |
15 | # You should have received a copy of the GNU General Public License along with | 15 | # You should have received a copy of the GNU General Public License along |
16 | # this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 16 | # with this program; if not, write to the Free Software Foundation, Inc., |
17 | # Place, Suite 330, Boston, MA 02111-1307 USA. | 17 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
18 | 18 | ||
19 | import os, sys | 19 | import os, sys |
20 | import bb, bb.data | 20 | import bb, bb.data |
diff --git a/bitbake/lib/bb/methodpool.py b/bitbake/lib/bb/methodpool.py index f0565ce790..f43c4a0580 100644 --- a/bitbake/lib/bb/methodpool.py +++ b/bitbake/lib/bb/methodpool.py | |||
@@ -3,34 +3,19 @@ | |||
3 | # | 3 | # |
4 | # | 4 | # |
5 | # Copyright (C) 2006 Holger Hans Peter Freyther | 5 | # Copyright (C) 2006 Holger Hans Peter Freyther |
6 | # All rights reserved. | ||
7 | # | 6 | # |
8 | # Redistribution and use in source and binary forms, with or without | 7 | # This program is free software; you can redistribute it and/or modify |
9 | # modification, are permitted provided that the following conditions are met: | 8 | # it under the terms of the GNU General Public License version 2 as |
9 | # published by the Free Software Foundation. | ||
10 | # | 10 | # |
11 | # Redistributions of source code must retain the above copyright notice, | 11 | # This program is distributed in the hope that it will be useful, |
12 | # this list of conditions and the following disclaimer. | 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | # GNU General Public License for more details. | ||
13 | # | 15 | # |
14 | # Redistributions in binary form must reproduce the above copyright | 16 | # You should have received a copy of the GNU General Public License along |
15 | # notice, this list of conditions and the following disclaimer in the | 17 | # with this program; if not, write to the Free Software Foundation, Inc., |
16 | # documentation and/or other materials provided with the distribution. | 18 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
17 | # | ||
18 | # Neither the name Holger Hans Peter Freyther nor the names of its | ||
19 | # contributors may be used to endorse or promote products derived | ||
20 | # from this software without specific prior written permission. | ||
21 | # | ||
22 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
23 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
24 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
25 | # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
26 | # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
27 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
28 | # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
29 | # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
30 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
31 | # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | ||
32 | # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
33 | # POSSIBILITY OF SUCH DAMAGE. | ||
34 | 19 | ||
35 | 20 | ||
36 | """ | 21 | """ |
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py index 473851cc72..bd7729731a 100644 --- a/bitbake/lib/bb/msg.py +++ b/bitbake/lib/bb/msg.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """ | 3 | """ |
@@ -6,23 +5,23 @@ BitBake 'msg' implementation | |||
6 | 5 | ||
7 | Message handling infrastructure for bitbake | 6 | Message handling infrastructure for bitbake |
8 | 7 | ||
9 | # Copyright (C) 2006 Richard Purdie | ||
10 | |||
11 | This program is free software; you can redistribute it and/or modify it under | ||
12 | the terms of the GNU General Public License as published by the Free Software | ||
13 | Foundation; either version 2 of the License, or (at your option) any later | ||
14 | version. | ||
15 | |||
16 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
17 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
18 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
19 | |||
20 | You should have received a copy of the GNU General Public License along with | ||
21 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
22 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
23 | |||
24 | """ | 8 | """ |
25 | 9 | ||
10 | # Copyright (C) 2006 Richard Purdie | ||
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | |||
26 | import sys, os, re, bb | 25 | import sys, os, re, bb |
27 | from bb import utils | 26 | from bb import utils |
28 | 27 | ||
diff --git a/bitbake/lib/bb/parse/__init__.py b/bitbake/lib/bb/parse/__init__.py index 70fdba03b4..3c9ba8e6da 100644 --- a/bitbake/lib/bb/parse/__init__.py +++ b/bitbake/lib/bb/parse/__init__.py | |||
@@ -3,24 +3,26 @@ BitBake Parsers | |||
3 | 3 | ||
4 | File parsers for the BitBake build tools. | 4 | File parsers for the BitBake build tools. |
5 | 5 | ||
6 | Copyright (C) 2003, 2004 Chris Larson | 6 | """ |
7 | Copyright (C) 2003, 2004 Phil Blundell | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify it under | ||
10 | the terms of the GNU General Public License as published by the Free Software | ||
11 | Foundation; either version 2 of the License, or (at your option) any later | ||
12 | version. | ||
13 | |||
14 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
15 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
16 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
17 | 7 | ||
18 | You should have received a copy of the GNU General Public License along with | ||
19 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
20 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
21 | 8 | ||
22 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | 9 | # Copyright (C) 2003, 2004 Chris Larson |
23 | """ | 10 | # Copyright (C) 2003, 2004 Phil Blundell |
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | # | ||
25 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
24 | 26 | ||
25 | __all__ = [ 'ParseError', 'SkipPackage', 'cached_mtime', 'mark_dependency', | 27 | __all__ = [ 'ParseError', 'SkipPackage', 'cached_mtime', 'mark_dependency', |
26 | 'supports', 'handle', 'init' ] | 28 | 'supports', 'handle', 'init' ] |
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py index 42b0369428..2c39316325 100644 --- a/bitbake/lib/bb/parse/parse_py/BBHandler.py +++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py | |||
@@ -1,25 +1,29 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | # ex:ts=4:sw=4:sts=4:et | 2 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """class for handling .bb files | 4 | """ |
5 | class for handling .bb files | ||
5 | 6 | ||
6 | Reads a .bb file and obtains its metadata | 7 | Reads a .bb file and obtains its metadata |
7 | 8 | ||
8 | Copyright (C) 2003, 2004 Chris Larson | 9 | """ |
9 | Copyright (C) 2003, 2004 Phil Blundell | 10 | |
10 | 11 | ||
11 | This program is free software; you can redistribute it and/or modify it under | 12 | # Copyright (C) 2003, 2004 Chris Larson |
12 | the terms of the GNU General Public License as published by the Free Software | 13 | # Copyright (C) 2003, 2004 Phil Blundell |
13 | Foundation; either version 2 of the License, or (at your option) any later | 14 | # |
14 | version. | 15 | # This program is free software; you can redistribute it and/or modify |
15 | 16 | # it under the terms of the GNU General Public License version 2 as | |
16 | This program is distributed in the hope that it will be useful, but WITHOUT | 17 | # published by the Free Software Foundation. |
17 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 18 | # |
18 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 19 | # This program is distributed in the hope that it will be useful, |
19 | 20 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 | You should have received a copy of the GNU General Public License along with | 21 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 22 | # GNU General Public License for more details. |
22 | Place, Suite 330, Boston, MA 02111-1307 USA.""" | 23 | # |
24 | # You should have received a copy of the GNU General Public License along | ||
25 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
26 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
23 | 27 | ||
24 | import re, bb, os, sys, time | 28 | import re, bb, os, sys, time |
25 | import bb.fetch, bb.build, bb.utils | 29 | import bb.fetch, bb.build, bb.utils |
diff --git a/bitbake/lib/bb/parse/parse_py/ConfHandler.py b/bitbake/lib/bb/parse/parse_py/ConfHandler.py index 6c0a8cceaf..1ae673079d 100644 --- a/bitbake/lib/bb/parse/parse_py/ConfHandler.py +++ b/bitbake/lib/bb/parse/parse_py/ConfHandler.py | |||
@@ -1,25 +1,28 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
2 | # ex:ts=4:sw=4:sts=4:et | 2 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | """class for handling configuration data files | 4 | """ |
5 | class for handling configuration data files | ||
5 | 6 | ||
6 | Reads a .conf file and obtains its metadata | 7 | Reads a .conf file and obtains its metadata |
7 | 8 | ||
8 | Copyright (C) 2003, 2004 Chris Larson | 9 | """ |
9 | Copyright (C) 2003, 2004 Phil Blundell | 10 | |
10 | 11 | # Copyright (C) 2003, 2004 Chris Larson | |
11 | This program is free software; you can redistribute it and/or modify it under | 12 | # Copyright (C) 2003, 2004 Phil Blundell |
12 | the terms of the GNU General Public License as published by the Free Software | 13 | # |
13 | Foundation; either version 2 of the License, or (at your option) any later | 14 | # This program is free software; you can redistribute it and/or modify |
14 | version. | 15 | # it under the terms of the GNU General Public License version 2 as |
15 | 16 | # published by the Free Software Foundation. | |
16 | This program is distributed in the hope that it will be useful, but WITHOUT | 17 | # |
17 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 18 | # This program is distributed in the hope that it will be useful, |
18 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | You should have received a copy of the GNU General Public License along with | 21 | # GNU General Public License for more details. |
21 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 22 | # |
22 | Place, Suite 330, Boston, MA 02111-1307 USA.""" | 23 | # You should have received a copy of the GNU General Public License along |
24 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
25 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
23 | 26 | ||
24 | import re, bb.data, os, sys | 27 | import re, bb.data, os, sys |
25 | from bb.parse import ParseError | 28 | from bb.parse import ParseError |
diff --git a/bitbake/lib/bb/parse/parse_py/__init__.py b/bitbake/lib/bb/parse/parse_py/__init__.py index 6a2ce4059d..9e0e00adda 100644 --- a/bitbake/lib/bb/parse/parse_py/__init__.py +++ b/bitbake/lib/bb/parse/parse_py/__init__.py | |||
@@ -6,24 +6,25 @@ BitBake Parsers | |||
6 | 6 | ||
7 | File parsers for the BitBake build tools. | 7 | File parsers for the BitBake build tools. |
8 | 8 | ||
9 | Copyright (C) 2003, 2004 Chris Larson | ||
10 | Copyright (C) 2003, 2004 Phil Blundell | ||
11 | |||
12 | This program is free software; you can redistribute it and/or modify it under | ||
13 | the terms of the GNU General Public License as published by the Free Software | ||
14 | Foundation; either version 2 of the License, or (at your option) any later | ||
15 | version. | ||
16 | |||
17 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
18 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
19 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
20 | |||
21 | You should have received a copy of the GNU General Public License along with | ||
22 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
23 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
24 | |||
25 | Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
26 | """ | 9 | """ |
10 | |||
11 | # Copyright (C) 2003, 2004 Chris Larson | ||
12 | # Copyright (C) 2003, 2004 Phil Blundell | ||
13 | # | ||
14 | # This program is free software; you can redistribute it and/or modify | ||
15 | # it under the terms of the GNU General Public License version 2 as | ||
16 | # published by the Free Software Foundation. | ||
17 | # | ||
18 | # This program is distributed in the hope that it will be useful, | ||
19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
21 | # GNU General Public License for more details. | ||
22 | # | ||
23 | # You should have received a copy of the GNU General Public License along | ||
24 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
25 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
26 | # | ||
27 | # Based on functions from the base bb module, Copyright 2003 Holger Schurig | ||
27 | __version__ = '1.0' | 28 | __version__ = '1.0' |
28 | 29 | ||
29 | __all__ = [ 'ConfHandler', 'BBHandler'] | 30 | __all__ = [ 'ConfHandler', 'BBHandler'] |
diff --git a/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py index 3cb7cc1f07..fdd6cd10d1 100644 --- a/bitbake/lib/bb/providers.py +++ b/bitbake/lib/bb/providers.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | # | 3 | # |
@@ -9,18 +8,18 @@ | |||
9 | # Copyright (C) 2005 ROAD GmbH | 8 | # Copyright (C) 2005 ROAD GmbH |
10 | # Copyright (C) 2006 Richard Purdie | 9 | # Copyright (C) 2006 Richard Purdie |
11 | # | 10 | # |
12 | # This program is free software; you can redistribute it and/or modify it under | 11 | # This program is free software; you can redistribute it and/or modify |
13 | # the terms of the GNU General Public License as published by the Free Software | 12 | # it under the terms of the GNU General Public License version 2 as |
14 | # Foundation; either version 2 of the License, or (at your option) any later | 13 | # published by the Free Software Foundation. |
15 | # version. | ||
16 | # | 14 | # |
17 | # This program is distributed in the hope that it will be useful, but WITHOUT | 15 | # This program is distributed in the hope that it will be useful, |
18 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
18 | # GNU General Public License for more details. | ||
20 | # | 19 | # |
21 | # You should have received a copy of the GNU General Public License along with | 20 | # You should have received a copy of the GNU General Public License along |
22 | # this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 21 | # with this program; if not, write to the Free Software Foundation, Inc., |
23 | # Place, Suite 330, Boston, MA 02111-1307 USA. | 22 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
24 | 23 | ||
25 | import os, re | 24 | import os, re |
26 | from bb import data, utils | 25 | from bb import data, utils |
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 4da543ffc8..2ef2670da0 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -5,20 +5,23 @@ | |||
5 | BitBake 'RunQueue' implementation | 5 | BitBake 'RunQueue' implementation |
6 | 6 | ||
7 | Handles preparation and execution of a queue of tasks | 7 | Handles preparation and execution of a queue of tasks |
8 | |||
9 | Copyright (C) 2006 Richard Purdie | ||
10 | |||
11 | This program is free software; you can redistribute it and/or modify it under | ||
12 | the terms of the GNU General Public License version 2 as published by the Free | ||
13 | Software Foundation | ||
14 | |||
15 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
16 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
17 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
18 | |||
19 | You should have received a copy of the GNU General Public License along with | ||
20 | """ | 8 | """ |
21 | 9 | ||
10 | # Copyright (C) 2006 Richard Purdie | ||
11 | # | ||
12 | # This program is free software; you can redistribute it and/or modify | ||
13 | # it under the terms of the GNU General Public License version 2 as | ||
14 | # published by the Free Software Foundation. | ||
15 | # | ||
16 | # This program is distributed in the hope that it will be useful, | ||
17 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
18 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
19 | # GNU General Public License for more details. | ||
20 | # | ||
21 | # You should have received a copy of the GNU General Public License along | ||
22 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
24 | |||
22 | from bb import msg, data, fetch, event, mkdirhier, utils | 25 | from bb import msg, data, fetch, event, mkdirhier, utils |
23 | from sets import Set | 26 | from sets import Set |
24 | import bb, os, sys | 27 | import bb, os, sys |
@@ -48,7 +51,7 @@ class RunQueue: | |||
48 | taskname = self.runq_task[task] | 51 | taskname = self.runq_task[task] |
49 | return "%s, %s" % (fn, taskname) | 52 | return "%s, %s" % (fn, taskname) |
50 | 53 | ||
51 | def prepare_runqueue(self, cfgData, dataCache, taskData, targets): | 54 | def prepare_runqueue(self, cooker, cfgData, dataCache, taskData, targets): |
52 | """ | 55 | """ |
53 | Turn a set of taskData into a RunQueue and compute data needed | 56 | Turn a set of taskData into a RunQueue and compute data needed |
54 | to optimise the execution order. | 57 | to optimise the execution order. |
@@ -104,9 +107,13 @@ class RunQueue: | |||
104 | depdata = taskData.build_targets[depid][0] | 107 | depdata = taskData.build_targets[depid][0] |
105 | if depdata: | 108 | if depdata: |
106 | dep = taskData.fn_index[depdata] | 109 | dep = taskData.fn_index[depdata] |
107 | taskid = taskData.gettask_id(dep, taskname) | 110 | # Need to avoid creating new tasks here |
108 | depends.append(taskid) | 111 | taskid = taskData.gettask_id(dep, taskname, False) |
109 | fnid = taskData.tasks_fnid[taskid] | 112 | if taskid: |
113 | depends.append(taskid) | ||
114 | fnid = taskData.tasks_fnid[taskid] | ||
115 | else: | ||
116 | fnid = taskData.getfn_id(dep) | ||
110 | for nextdepid in taskData.depids[fnid]: | 117 | for nextdepid in taskData.depids[fnid]: |
111 | if nextdepid not in dep_seen: | 118 | if nextdepid not in dep_seen: |
112 | add_recursive_build(nextdepid) | 119 | add_recursive_build(nextdepid) |
@@ -127,9 +134,13 @@ class RunQueue: | |||
127 | depdata = taskData.run_targets[rdepid][0] | 134 | depdata = taskData.run_targets[rdepid][0] |
128 | if depdata: | 135 | if depdata: |
129 | dep = taskData.fn_index[depdata] | 136 | dep = taskData.fn_index[depdata] |
130 | taskid = taskData.gettask_id(dep, taskname) | 137 | # Need to avoid creating new tasks here |
131 | depends.append(taskid) | 138 | taskid = taskData.gettask_id(dep, taskname, False) |
132 | fnid = taskData.tasks_fnid[taskid] | 139 | if taskid: |
140 | depends.append(taskid) | ||
141 | fnid = taskData.tasks_fnid[taskid] | ||
142 | else: | ||
143 | fnid = taskData.getfn_id(dep) | ||
133 | for nextdepid in taskData.depids[fnid]: | 144 | for nextdepid in taskData.depids[fnid]: |
134 | if nextdepid not in dep_seen: | 145 | if nextdepid not in dep_seen: |
135 | add_recursive_build(nextdepid) | 146 | add_recursive_build(nextdepid) |
@@ -143,11 +154,11 @@ class RunQueue: | |||
143 | if 'recrdeptask' in task_deps and taskData.tasks_name[task] in task_deps['recrdeptask']: | 154 | if 'recrdeptask' in task_deps and taskData.tasks_name[task] in task_deps['recrdeptask']: |
144 | dep_seen = [] | 155 | dep_seen = [] |
145 | rdep_seen = [] | 156 | rdep_seen = [] |
146 | taskname = task_deps['recrdeptask'][taskData.tasks_name[task]] | 157 | for taskname in task_deps['recrdeptask'][taskData.tasks_name[task]].split(): |
147 | for depid in taskData.depids[fnid]: | 158 | for depid in taskData.depids[fnid]: |
148 | add_recursive_build(depid) | 159 | add_recursive_build(depid) |
149 | for rdepid in taskData.rdepids[fnid]: | 160 | for rdepid in taskData.rdepids[fnid]: |
150 | add_recursive_run(rdepid) | 161 | add_recursive_run(rdepid) |
151 | 162 | ||
152 | #Prune self references | 163 | #Prune self references |
153 | if task in depends: | 164 | if task in depends: |
@@ -188,13 +199,21 @@ class RunQueue: | |||
188 | 199 | ||
189 | for target in targets: | 200 | for target in targets: |
190 | targetid = taskData.getbuild_id(target[0]) | 201 | targetid = taskData.getbuild_id(target[0]) |
191 | if targetid in taskData.failed_deps: | ||
192 | continue | ||
193 | 202 | ||
194 | if targetid not in taskData.build_targets: | 203 | if targetid not in taskData.build_targets: |
195 | continue | 204 | continue |
196 | 205 | ||
197 | fnid = taskData.build_targets[targetid][0] | 206 | fnid = taskData.build_targets[targetid][0] |
207 | |||
208 | # Remove stamps for targets if force mode active | ||
209 | if cooker.configuration.force: | ||
210 | fn = taskData.fn_index[fnid] | ||
211 | bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (target[1], fn)) | ||
212 | bb.build.del_stamp(target[1], dataCache, fn) | ||
213 | |||
214 | if targetid in taskData.failed_deps: | ||
215 | continue | ||
216 | |||
198 | if fnid in taskData.failed_fnids: | 217 | if fnid in taskData.failed_fnids: |
199 | continue | 218 | continue |
200 | 219 | ||
@@ -338,10 +357,13 @@ class RunQueue: | |||
338 | 357 | ||
339 | bb.msg.note(1, bb.msg.domain.RunQueue, "Executing runqueue") | 358 | bb.msg.note(1, bb.msg.domain.RunQueue, "Executing runqueue") |
340 | 359 | ||
360 | active_builds = 0 | ||
361 | tasks_completed = 0 | ||
362 | tasks_skipped = 0 | ||
363 | |||
341 | runq_buildable = [] | 364 | runq_buildable = [] |
342 | runq_running = [] | 365 | runq_running = [] |
343 | runq_complete = [] | 366 | runq_complete = [] |
344 | active_builds = 0 | ||
345 | build_pids = {} | 367 | build_pids = {} |
346 | failed_fnids = [] | 368 | failed_fnids = [] |
347 | 369 | ||
@@ -405,15 +427,15 @@ class RunQueue: | |||
405 | fn = taskData.fn_index[self.runq_fnid[task]] | 427 | fn = taskData.fn_index[self.runq_fnid[task]] |
406 | taskname = self.runq_task[task] | 428 | taskname = self.runq_task[task] |
407 | 429 | ||
408 | if bb.build.stamp_is_current_cache(dataCache, fn, taskname): | 430 | if bb.build.stamp_is_current(taskname, dataCache, fn): |
409 | targetid = taskData.gettask_id(fn, taskname) | 431 | bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp current task %s (%s)" % (task, self.get_user_idstring(task, taskData))) |
410 | if not (targetid in taskData.external_targets and cooker.configuration.force): | 432 | runq_running[task] = 1 |
411 | bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp current task %s (%s)" % (task, self.get_user_idstring(task, taskData))) | 433 | task_complete(self, task) |
412 | runq_running[task] = 1 | 434 | tasks_completed = tasks_completed + 1 |
413 | task_complete(self, task) | 435 | tasks_skipped = tasks_skipped + 1 |
414 | continue | 436 | continue |
415 | 437 | ||
416 | bb.msg.debug(1, bb.msg.domain.RunQueue, "Running task %s (%s)" % (task, self.get_user_idstring(task, taskData))) | 438 | bb.msg.note(1, bb.msg.domain.RunQueue, "Running task %d of %d (ID: %s, %s)" % (tasks_completed + active_builds + 1, len(self.runq_fnid), task, self.get_user_idstring(task, taskData))) |
417 | try: | 439 | try: |
418 | pid = os.fork() | 440 | pid = os.fork() |
419 | except OSError, e: | 441 | except OSError, e: |
@@ -451,6 +473,7 @@ class RunQueue: | |||
451 | failed_fnids.append(self.runq_fnid[task]) | 473 | failed_fnids.append(self.runq_fnid[task]) |
452 | break | 474 | break |
453 | task_complete(self, task) | 475 | task_complete(self, task) |
476 | tasks_completed = tasks_completed + 1 | ||
454 | del build_pids[result[0]] | 477 | del build_pids[result[0]] |
455 | continue | 478 | continue |
456 | break | 479 | break |
@@ -486,6 +509,8 @@ class RunQueue: | |||
486 | if runq_complete[task] == 0: | 509 | if runq_complete[task] == 0: |
487 | bb.msg.error(bb.msg.domain.RunQueue, "Task %s never completed!" % task) | 510 | bb.msg.error(bb.msg.domain.RunQueue, "Task %s never completed!" % task) |
488 | 511 | ||
512 | bb.msg.note(1, bb.msg.domain.RunQueue, "Tasks Summary: Attempted %d tasks of which %d didn't need to be rerun and %d failed." % (tasks_completed, tasks_skipped, len(failed_fnids))) | ||
513 | |||
489 | return failed_fnids | 514 | return failed_fnids |
490 | 515 | ||
491 | def dump_data(self, taskQueue): | 516 | def dump_data(self, taskQueue): |
diff --git a/bitbake/lib/bb/shell.py b/bitbake/lib/bb/shell.py index cb8e97b715..32a773064b 100644 --- a/bitbake/lib/bb/shell.py +++ b/bitbake/lib/bb/shell.py | |||
@@ -1,4 +1,3 @@ | |||
1 | #!/usr/bin/env python | ||
2 | # ex:ts=4:sw=4:sts=4:et | 1 | # ex:ts=4:sw=4:sts=4:et |
3 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
4 | ########################################################################## | 3 | ########################################################################## |
@@ -6,17 +5,18 @@ | |||
6 | # Copyright (C) 2005-2006 Michael 'Mickey' Lauer <mickey@Vanille.de> | 5 | # Copyright (C) 2005-2006 Michael 'Mickey' Lauer <mickey@Vanille.de> |
7 | # Copyright (C) 2005-2006 Vanille Media | 6 | # Copyright (C) 2005-2006 Vanille Media |
8 | # | 7 | # |
9 | # This program is free software; you can redistribute it and/or modify it under | 8 | # This program is free software; you can redistribute it and/or modify |
10 | # the terms of the GNU General Public License as published by the Free Software | 9 | # it under the terms of the GNU General Public License version 2 as |
11 | # Foundation; version 2 of the License. | 10 | # published by the Free Software Foundation. |
12 | # | 11 | # |
13 | # This program is distributed in the hope that it will be useful, but WITHOUT | 12 | # This program is distributed in the hope that it will be useful, |
14 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | # GNU General Public License for more details. | ||
16 | # | 16 | # |
17 | # You should have received a copy of the GNU General Public License along with | 17 | # You should have received a copy of the GNU General Public License along |
18 | # this program; if not, write to the Free Software Foundation, Inc., 59 Temple | 18 | # with this program; if not, write to the Free Software Foundation, Inc., |
19 | # Place, Suite 330, Boston, MA 02111-1307 USA. | 19 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
20 | # | 20 | # |
21 | ########################################################################## | 21 | ########################################################################## |
22 | # | 22 | # |
@@ -171,7 +171,7 @@ class BitBakeShellCommands: | |||
171 | td.add_unresolved(cooker.configuration.data, cooker.status) | 171 | td.add_unresolved(cooker.configuration.data, cooker.status) |
172 | 172 | ||
173 | rq = runqueue.RunQueue() | 173 | rq = runqueue.RunQueue() |
174 | rq.prepare_runqueue(cooker.configuration.data, cooker.status, td, tasks) | 174 | rq.prepare_runqueue(cooker, cooker.configuration.data, cooker.status, td, tasks) |
175 | rq.execute_runqueue(cooker, cooker.configuration.data, cooker.status, td, tasks) | 175 | rq.execute_runqueue(cooker, cooker.configuration.data, cooker.status, td, tasks) |
176 | 176 | ||
177 | except Providers.NoProvider: | 177 | except Providers.NoProvider: |
@@ -255,6 +255,11 @@ class BitBakeShellCommands: | |||
255 | except parse.ParseError: | 255 | except parse.ParseError: |
256 | print "ERROR: Unable to open or parse '%s'" % bf | 256 | print "ERROR: Unable to open or parse '%s'" % bf |
257 | else: | 257 | else: |
258 | # Remove stamp for target if force mode active | ||
259 | if cooker.configuration.force: | ||
260 | bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (cmd, bf)) | ||
261 | bb.build.del_stamp('do_%s' % cmd, bbfile_data) | ||
262 | |||
258 | item = data.getVar('PN', bbfile_data, 1) | 263 | item = data.getVar('PN', bbfile_data, 1) |
259 | data.setVar( "_task_cache", [], bbfile_data ) # force | 264 | data.setVar( "_task_cache", [], bbfile_data ) # force |
260 | try: | 265 | try: |
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index 181bb5e35b..17d6d95530 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py | |||
@@ -6,19 +6,23 @@ BitBake 'TaskData' implementation | |||
6 | 6 | ||
7 | Task data collection and handling | 7 | Task data collection and handling |
8 | 8 | ||
9 | Copyright (C) 2006 Richard Purdie | ||
10 | |||
11 | This program is free software; you can redistribute it and/or modify it under | ||
12 | the terms of the GNU General Public License version 2 as published by the Free | ||
13 | Software Foundation | ||
14 | |||
15 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
16 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
17 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
18 | |||
19 | You should have received a copy of the GNU General Public License along with | ||
20 | """ | 9 | """ |
21 | 10 | ||
11 | # Copyright (C) 2006 Richard Purdie | ||
12 | # | ||
13 | # This program is free software; you can redistribute it and/or modify | ||
14 | # it under the terms of the GNU General Public License version 2 as | ||
15 | # published by the Free Software Foundation. | ||
16 | # | ||
17 | # This program is distributed in the hope that it will be useful, | ||
18 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | # GNU General Public License for more details. | ||
21 | # | ||
22 | # You should have received a copy of the GNU General Public License along | ||
23 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
24 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
25 | |||
22 | from bb import data, fetch, event, mkdirhier, utils | 26 | from bb import data, fetch, event, mkdirhier, utils |
23 | import bb, os | 27 | import bb, os |
24 | 28 | ||
@@ -86,10 +90,11 @@ class TaskData: | |||
86 | 90 | ||
87 | return self.fn_index.index(name) | 91 | return self.fn_index.index(name) |
88 | 92 | ||
89 | def gettask_id(self, fn, task): | 93 | def gettask_id(self, fn, task, create = True): |
90 | """ | 94 | """ |
91 | Return an ID number for the task matching fn and task. | 95 | Return an ID number for the task matching fn and task. |
92 | If it doesn't exist, create one. | 96 | If it doesn't exist, create one by default. |
97 | Optionally return None instead. | ||
93 | """ | 98 | """ |
94 | fnid = self.getfn_id(fn) | 99 | fnid = self.getfn_id(fn) |
95 | 100 | ||
@@ -97,6 +102,9 @@ class TaskData: | |||
97 | if task in self.tasks_lookup[fnid]: | 102 | if task in self.tasks_lookup[fnid]: |
98 | return self.tasks_lookup[fnid][task] | 103 | return self.tasks_lookup[fnid][task] |
99 | 104 | ||
105 | if not create: | ||
106 | return None | ||
107 | |||
100 | self.tasks_name.append(task) | 108 | self.tasks_name.append(task) |
101 | self.tasks_fnid.append(fnid) | 109 | self.tasks_fnid.append(fnid) |
102 | self.tasks_tdepends.append([]) | 110 | self.tasks_tdepends.append([]) |
@@ -529,6 +537,7 @@ class TaskData: | |||
529 | bb.msg.debug(1, bb.msg.domain.TaskData, "Resolved " + str(added) + " extra dependecies") | 537 | bb.msg.debug(1, bb.msg.domain.TaskData, "Resolved " + str(added) + " extra dependecies") |
530 | if added == 0: | 538 | if added == 0: |
531 | break | 539 | break |
540 | # self.dump_data() | ||
532 | 541 | ||
533 | def dump_data(self): | 542 | def dump_data(self): |
534 | """ | 543 | """ |
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index d7383f44b2..411f43a105 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -2,23 +2,23 @@ | |||
2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- | 2 | # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- |
3 | """ | 3 | """ |
4 | BitBake Utility Functions | 4 | BitBake Utility Functions |
5 | |||
6 | This program is free software; you can redistribute it and/or modify it under | ||
7 | the terms of the GNU General Public License as published by the Free Software | ||
8 | Foundation; either version 2 of the License, or (at your option) any later | ||
9 | version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, but WITHOUT | ||
12 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
13 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License along with | ||
16 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
17 | Place, Suite 330, Boston, MA 02111-1307 USA. | ||
18 | |||
19 | This file is part of the BitBake build tools. | ||
20 | """ | 5 | """ |
21 | 6 | ||
7 | # Copyright (C) 2004 Michael Lauer | ||
8 | # | ||
9 | # This program is free software; you can redistribute it and/or modify | ||
10 | # it under the terms of the GNU General Public License version 2 as | ||
11 | # published by the Free Software Foundation. | ||
12 | # | ||
13 | # This program is distributed in the hope that it will be useful, | ||
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | # GNU General Public License for more details. | ||
17 | # | ||
18 | # You should have received a copy of the GNU General Public License along | ||
19 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
20 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
21 | |||
22 | digits = "0123456789" | 22 | digits = "0123456789" |
23 | ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" | 23 | ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" |
24 | 24 | ||