summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/COW.py29
-rw-r--r--bitbake/lib/bb/__init__.py42
-rw-r--r--bitbake/lib/bb/build.py193
-rw-r--r--bitbake/lib/bb/cache.py36
-rw-r--r--bitbake/lib/bb/cooker.py665
-rw-r--r--bitbake/lib/bb/data.py37
-rw-r--r--bitbake/lib/bb/data_smart.py40
-rw-r--r--bitbake/lib/bb/event.py31
-rw-r--r--bitbake/lib/bb/fetch/__init__.py35
-rw-r--r--bitbake/lib/bb/fetch/cvs.py41
-rw-r--r--bitbake/lib/bb/fetch/git.py30
-rw-r--r--bitbake/lib/bb/fetch/local.py34
-rw-r--r--bitbake/lib/bb/fetch/perforce.py34
-rw-r--r--bitbake/lib/bb/fetch/ssh.py46
-rw-r--r--bitbake/lib/bb/fetch/svk.py44
-rw-r--r--bitbake/lib/bb/fetch/svn.py43
-rw-r--r--bitbake/lib/bb/fetch/wget.py34
-rw-r--r--bitbake/lib/bb/manifest.py24
-rw-r--r--bitbake/lib/bb/methodpool.py35
-rw-r--r--bitbake/lib/bb/msg.py31
-rw-r--r--bitbake/lib/bb/parse/__init__.py34
-rw-r--r--bitbake/lib/bb/parse/parse_py/BBHandler.py36
-rw-r--r--bitbake/lib/bb/parse/parse_py/ConfHandler.py35
-rw-r--r--bitbake/lib/bb/parse/parse_py/__init__.py35
-rw-r--r--bitbake/lib/bb/providers.py21
-rw-r--r--bitbake/lib/bb/runqueue.py95
-rw-r--r--bitbake/lib/bb/shell.py27
-rw-r--r--bitbake/lib/bb/taskdata.py35
-rw-r--r--bitbake/lib/bb/utils.py30
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#
4This 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#
6Please 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
11from inspect import getmro 26from 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#
5BitBake Build System Python Library 4# BitBake Build System Python Library
6 5#
7Copyright (C) 2003 Holger Schurig 6# Copyright (C) 2003 Holger Schurig
8Copyright (C) 2003, 2004 Chris Larson 7# Copyright (C) 2003, 2004 Chris Larson
9 8#
10Based on Gentoo's portage.py. 9# Based on Gentoo's portage.py.
11 10#
12This 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
13the 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
14Foundation; either version 2 of the License, or (at your option) any later 13# published by the Free Software Foundation.
15version. 14#
16 15# This program is distributed in the hope that it will be useful,
17This program is distributed in the hope that it will be useful, but WITHOUT 16# but WITHOUT ANY WARRANTY; without even the implied warranty of
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 18# GNU General Public License for more details.
20 19#
21You 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
22this 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.,
23Place, 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#
5BitBake 'Build' implementation 4# BitBake 'Build' implementation
6 5#
7Core code for function execution and task handling in the 6# Core code for function execution and task handling in the
8BitBake build tools. 7# BitBake build tools.
9 8#
10Copyright (C) 2003, 2004 Chris Larson 9# Copyright (C) 2003, 2004 Chris Larson
11 10#
12Based on Gentoo's portage.py. 11# Based on Gentoo's portage.py.
13 12#
14This 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
15the 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
16Foundation; either version 2 of the License, or (at your option) any later 15# published by the Free Software Foundation.
17version. 16#
18 17# This program is distributed in the hope that it will be useful,
19This program is distributed in the hope that it will be useful, but WITHOUT 18# but WITHOUT ANY WARRANTY; without even the implied warranty of
20ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 20# GNU General Public License for more details.
22 21#
23You 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.,
25Based 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
28from bb import data, fetch, event, mkdirhier, utils 28from bb import data, fetch, event, mkdirhier, utils
29import bb, os 29import 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
296def stamp_is_current_cache(dataCache, file_name, task, checkdeps = 1): 299def 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) 312def 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
334def stamp_is_current(task, d, checkdeps = 1): 321def 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 364def stamp_internal(task, d, file_name):
374def 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
378def 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
382def 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
392def 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
392def add_task(task, deps, d): 399def 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#
5BitBake 'Event' implementation 4# BitBake 'Event' implementation
6 5#
7Caching 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
18This program is free software; you can redistribute it and/or modify it under
19the terms of the GNU General Public License as published by the Free Software
20Foundation; either version 2 of the License, or (at your option) any later
21version.
22
23This program is distributed in the hope that it will be useful, but WITHOUT
24ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
25FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
26
27You should have received a copy of the GNU General Public License along with
28this program; if not, write to the Free Software Foundation, Inc., 59 Temple
29Place, Suite 330, Boston, MA 02111-1307 USA.
30
31"""
32 30
33import os, re 31import os, re
34import bb.data 32import 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
25import sys, os, getopt, glob, copy, os.path, re, time
26import bb
27from bb import utils, data, parse, event, cache, providers, taskdata, runqueue
28from sets import Set
29import itertools
30
31parsespin = itertools.cycle( r'|/-\\' )
32
33#============================================================================#
34# BBStatistics
35#============================================================================#
36class 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#============================================================================#
59class 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 print
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
19This is a treade-off between speed and memory again but 18This is a treade-off between speed and memory again but
20the speed is more critical here. 19the speed is more critical here.
21
22Copyright (C) 2003, 2004 Chris Larson
23Copyright (C) 2005 Holger Hans Peter Freyther
24
25This program is free software; you can redistribute it and/or modify it under
26the terms of the GNU General Public License as published by the Free Software
27Foundation; either version 2 of the License, or (at your option) any later
28version.
29
30This program is distributed in the hope that it will be useful, but WITHOUT
31ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
32FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
33
34You should have received a copy of the GNU General Public License along with
35this program; if not, write to the Free Software Foundation, Inc., 59 Temple
36Place, Suite 330, Boston, MA 02111-1307 USA.
37
38Based 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
41import sys, os, re, time, types 40import sys, os, re, time, types
42if sys.argv[0][-5:] == "pydoc": 41if 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
6Functions for interacting with the data structure used by the 6Functions for interacting with the data structure used by the
7BitBake build tools. 7BitBake build tools.
8 8
9Copyright (C) 2003, 2004 Chris Larson
10Copyright (C) 2004, 2005 Seb Frankengul
11Copyright (C) 2005, 2006 Holger Hans Peter Freyther
12Copyright (C) 2005 Uli Luckas
13Copyright (C) 2005 ROAD GmbH
14
15This program is free software; you can redistribute it and/or modify it under
16the terms of the GNU General Public License as published by the Free Software
17Foundation; either version 2 of the License, or (at your option) any later
18version.
19
20This program is distributed in the hope that it will be useful, but WITHOUT
21ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
23
24You should have received a copy of the GNU General Public License along with
25this program; if not, write to the Free Software Foundation, Inc., 59 Temple
26Place, Suite 330, Boston, MA 02111-1307 USA.
27
28Based 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
31import copy, os, re, sys, time, types 31import copy, os, re, sys, time, types
32import bb 32import bb
33from bb import utils, methodpool 33from 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
7Classes and functions for manipulating 'events' in the 6Classes and functions for manipulating 'events' in the
8BitBake build tools. 7BitBake build tools.
9
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, 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
26import os, re 25import os, re
27import bb.data 26import bb.data
28import bb.utils 27import 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
7Classes for obtaining upstream sources for the 6Classes for obtaining upstream sources for the
8BitBake build tools. 7BitBake build tools.
9
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
28import os, re 27import os, re
29import bb 28import bb
30from bb import data 29from 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
7Classes for obtaining upstream sources for the 6Classes for obtaining upstream sources for the
8BitBake build tools. 7BitBake build tools.
9 8
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
28import os, re 29import os, re
29import bb 30import bb
30from bb import data 31from 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"""
5BitBake 'Fetch' git implementation 4BitBake 'Fetch' git implementation
6 5
7Copyright (C) 2005 Richard Purdie
8
9This program is free software; you can redistribute it and/or modify it under
10the terms of the GNU General Public License as published by the Free Software
11Foundation; either version 2 of the License, or (at your option) any later
12version.
13
14This program is distributed in the hope that it will be useful, but WITHOUT
15ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License along with
19this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20Place, 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
23import os, re 23import os, re
24import bb 24import bb
25from bb import data 25from 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
7Classes for obtaining upstream sources for the 6Classes for obtaining upstream sources for the
8BitBake build tools. 7BitBake build tools.
9 8
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
28import os, re 28import os, re
29import bb 29import bb
30from bb import data 30from 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
7Classes for obtaining upstream sources for the 6Classes for obtaining upstream sources for the
8BitBake build tools. 7BitBake build tools.
9 8
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
28import os, re 28import os, re
29import bb 29import bb
30from bb import data 30from 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
14Copyright (C) 2006 OpenedHand Ltd. 13'''
15
16Based 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
24This program is free software; you can redistribute it and/or modify it under
25the terms of the GNU General Public License as published by the Free Software
26Foundation; either version 2 of the License, or (at your option) any later
27version.
28 14
29This program is distributed in the hope that it will be useful, but WITHOUT 15# Copyright (C) 2006 OpenedHand Ltd.
30ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 16#
31FOR 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
33You should have received a copy of the GNU General Public License along with
34this program; if not, write to the Free Software Foundation, Inc., 59 Temple
35Place, Suite 330, Boston, MA 02111-1307 USA.
36'''
37import re, os 39import re, os
38import bb 40import bb
39from bb import data 41from 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
7This implementation is for svk. It is based on the svn implementation 6This implementation is for svk. It is based on the svn implementation
8 7
9Copyright (C) 2006 Holger Hans Peter Freyther
10
11GPL and MIT licensed
12
13
14
15Classes for obtaining upstream sources for the
16BitBake build tools.
17
18Copyright (C) 2003, 2004 Chris Larson
19
20This program is free software; you can redistribute it and/or modify it under
21the terms of the GNU General Public License as published by the Free Software
22Foundation; either version 2 of the License, or (at your option) any later
23version.
24
25This program is distributed in the hope that it will be useful, but WITHOUT
26ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
27FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
28
29You should have received a copy of the GNU General Public License along with
30this program; if not, write to the Free Software Foundation, Inc., 59 Temple
31Place, Suite 330, Boston, MA 02111-1307 USA.
32
33Based 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
36import os, re 28import os, re
37import bb 29import bb
38from bb import data 30from 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
7This implementation is for svn. It is based on the cvs implementation. 6This implementation is for svn. It is based on the cvs implementation.
8 7
9Copyright (C) 2004 Marcin Juszkiewicz
10
11Classes for obtaining upstream sources for the
12BitBake build tools.
13
14Copyright (C) 2003, 2004 Chris Larson
15
16This program is free software; you can redistribute it and/or modify it under
17the terms of the GNU General Public License as published by the Free Software
18Foundation; either version 2 of the License, or (at your option) any later
19version.
20
21This program is distributed in the hope that it will be useful, but WITHOUT
22ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
23FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
24
25You should have received a copy of the GNU General Public License along with
26this program; if not, write to the Free Software Foundation, Inc., 59 Temple
27Place, Suite 330, Boston, MA 02111-1307 USA.
28
29Based 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
32import os, re 31import os, re
33import sys 32import sys
34import bb 33import 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
7Classes for obtaining upstream sources for the 6Classes for obtaining upstream sources for the
8BitBake build tools. 7BitBake build tools.
9 8
10Copyright (C) 2003, 2004 Chris Larson
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
28import os, re 28import os, re
29import bb 29import bb
30from bb import data 30from 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
19import os, sys 19import os, sys
20import bb, bb.data 20import 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
7Message handling infrastructure for bitbake 6Message handling infrastructure for bitbake
8 7
9# Copyright (C) 2006 Richard Purdie
10
11This program is free software; you can redistribute it and/or modify it under
12the terms of the GNU General Public License as published by the Free Software
13Foundation; either version 2 of the License, or (at your option) any later
14version.
15
16This program is distributed in the hope that it will be useful, but WITHOUT
17ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
19
20You should have received a copy of the GNU General Public License along with
21this program; if not, write to the Free Software Foundation, Inc., 59 Temple
22Place, 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
26import sys, os, re, bb 25import sys, os, re, bb
27from bb import utils 26from 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
4File parsers for the BitBake build tools. 4File parsers for the BitBake build tools.
5 5
6Copyright (C) 2003, 2004 Chris Larson 6"""
7Copyright (C) 2003, 2004 Phil Blundell
8
9This program is free software; you can redistribute it and/or modify it under
10the terms of the GNU General Public License as published by the Free Software
11Foundation; either version 2 of the License, or (at your option) any later
12version.
13
14This program is distributed in the hope that it will be useful, but WITHOUT
15ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 7
18You should have received a copy of the GNU General Public License along with
19this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20Place, Suite 330, Boston, MA 02111-1307 USA.
21 8
22Based 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
24import re, bb, os, sys, time 28import re, bb, os, sys, time
25import bb.fetch, bb.build, bb.utils 29import 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
24import re, bb.data, os, sys 27import re, bb.data, os, sys
25from bb.parse import ParseError 28from 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
7File parsers for the BitBake build tools. 7File parsers for the BitBake build tools.
8 8
9Copyright (C) 2003, 2004 Chris Larson
10Copyright (C) 2003, 2004 Phil Blundell
11
12This program is free software; you can redistribute it and/or modify it under
13the terms of the GNU General Public License as published by the Free Software
14Foundation; either version 2 of the License, or (at your option) any later
15version.
16
17This program is distributed in the hope that it will be useful, but WITHOUT
18ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20
21You should have received a copy of the GNU General Public License along with
22this program; if not, write to the Free Software Foundation, Inc., 59 Temple
23Place, Suite 330, Boston, MA 02111-1307 USA.
24
25Based 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
25import os, re 24import os, re
26from bb import data, utils 25from 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 @@
5BitBake 'RunQueue' implementation 5BitBake 'RunQueue' implementation
6 6
7Handles preparation and execution of a queue of tasks 7Handles preparation and execution of a queue of tasks
8
9Copyright (C) 2006 Richard Purdie
10
11This program is free software; you can redistribute it and/or modify it under
12the terms of the GNU General Public License version 2 as published by the Free
13Software Foundation
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18
19You 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
22from bb import msg, data, fetch, event, mkdirhier, utils 25from bb import msg, data, fetch, event, mkdirhier, utils
23from sets import Set 26from sets import Set
24import bb, os, sys 27import 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
7Task data collection and handling 7Task data collection and handling
8 8
9Copyright (C) 2006 Richard Purdie
10
11This program is free software; you can redistribute it and/or modify it under
12the terms of the GNU General Public License version 2 as published by the Free
13Software Foundation
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18
19You 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
22from bb import data, fetch, event, mkdirhier, utils 26from bb import data, fetch, event, mkdirhier, utils
23import bb, os 27import 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"""
4BitBake Utility Functions 4BitBake Utility Functions
5
6This program is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free Software
8Foundation; either version 2 of the License, or (at your option) any later
9version.
10
11This program is distributed in the hope that it will be useful, but WITHOUT
12ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License along with
16this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17Place, Suite 330, Boston, MA 02111-1307 USA.
18
19This 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
22digits = "0123456789" 22digits = "0123456789"
23ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 23ascii_letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
24 24