diff options
author | Richard Purdie <richard@openedhand.com> | 2007-08-12 23:06:49 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2007-08-12 23:06:49 +0000 |
commit | ce800d3aea333919302a490838906983c18fe54d (patch) | |
tree | 14754c6d6de07f47a6f917b4d4d0e9bf52468beb /bitbake | |
parent | fc136f0b4c9f6c0bed18fb565f5c83d041abdd39 (diff) | |
download | poky-ce800d3aea333919302a490838906983c18fe54d.tar.gz |
bitbake: Sync with upstream 1.8 branch for fixes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2484 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/ChangeLog | 9 | ||||
-rw-r--r-- | bitbake/lib/bb/__init__.py | 20 | ||||
-rw-r--r-- | bitbake/lib/bb/cooker.py | 21 | ||||
-rw-r--r-- | bitbake/lib/bb/data.py | 4 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/__init__.py | 17 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/local.py | 4 |
6 files changed, 58 insertions, 17 deletions
diff --git a/bitbake/ChangeLog b/bitbake/ChangeLog index c5641836d1..1fbbd710bb 100644 --- a/bitbake/ChangeLog +++ b/bitbake/ChangeLog | |||
@@ -12,7 +12,14 @@ Changes in Bitbake 1.8.x: | |||
12 | - Add pn-PN to overrides when evaluating PREFERRED_VERSION | 12 | - Add pn-PN to overrides when evaluating PREFERRED_VERSION |
13 | - Improve the progress indicator by skipping tasks that have | 13 | - Improve the progress indicator by skipping tasks that have |
14 | already run before starting the build rather than during it | 14 | already run before starting the build rather than during it |
15 | - Add profiling option (-P) | 15 | - Add profiling option (-P) |
16 | - Add BB_SRCREV_POLICY variable (clear or cache) to control SRCREV cache | ||
17 | - Add SRCREV_FORMAT support | ||
18 | - Fix local fetcher's localpath return values | ||
19 | - Apply OVERRIDES before performing immediate expansions | ||
20 | - Allow the -b -e option combination to take regular expressions | ||
21 | - Fix handling of variables with expansion in the name using _append/_prepend | ||
22 | e.g. RRECOMMENDS_${PN}_append_xyz = "abc" | ||
16 | 23 | ||
17 | Changes in Bitbake 1.8.6: | 24 | Changes in Bitbake 1.8.6: |
18 | - Correctly redirect stdin when forking | 25 | - Correctly redirect stdin when forking |
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index e601eda469..1bfecc49ec 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py | |||
@@ -345,14 +345,20 @@ def encodeurl(decoded): | |||
345 | ####################################################################### | 345 | ####################################################################### |
346 | 346 | ||
347 | def which(path, item, direction = 0): | 347 | def which(path, item, direction = 0): |
348 | """Useful function for locating a file in a PATH""" | 348 | """ |
349 | found = "" | 349 | Locate a file in a PATH |
350 | """ | ||
351 | |||
352 | paths = (path or "").split(':') | ||
353 | if direction != 0: | ||
354 | paths.reverse() | ||
355 | |||
350 | for p in (path or "").split(':'): | 356 | for p in (path or "").split(':'): |
351 | if os.path.exists(os.path.join(p, item)): | 357 | next = os.path.join(p, item) |
352 | found = os.path.join(p, item) | 358 | if os.path.exists(next): |
353 | if direction == 0: | 359 | return next |
354 | break | 360 | |
355 | return found | 361 | return "" |
356 | 362 | ||
357 | ####################################################################### | 363 | ####################################################################### |
358 | 364 | ||
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 7db3529bb4..955fbb434c 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -143,10 +143,11 @@ class BBCooker: | |||
143 | if self.configuration.buildfile: | 143 | if self.configuration.buildfile: |
144 | self.cb = None | 144 | self.cb = None |
145 | self.bb_cache = bb.cache.init(self) | 145 | self.bb_cache = bb.cache.init(self) |
146 | bf = self.matchFile(self.configuration.buildfile) | ||
146 | try: | 147 | try: |
147 | self.configuration.data = self.bb_cache.loadDataFull(self.configuration.buildfile, self.configuration.data) | 148 | self.configuration.data = self.bb_cache.loadDataFull(bf, self.configuration.data) |
148 | except IOError, e: | 149 | except IOError, e: |
149 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % ( self.configuration.buildfile, e )) | 150 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % (bf, e)) |
150 | except Exception, e: | 151 | except Exception, e: |
151 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) | 152 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) |
152 | # emit variables and shell functions | 153 | # emit variables and shell functions |
@@ -377,14 +378,15 @@ class BBCooker: | |||
377 | bb.data.setVar("BUILDNAME", os.popen('date +%Y%m%d%H%M').readline().strip(), self.configuration.data) | 378 | bb.data.setVar("BUILDNAME", os.popen('date +%Y%m%d%H%M').readline().strip(), self.configuration.data) |
378 | bb.data.setVar("BUILDSTART", time.strftime('%m/%d/%Y %H:%M:%S',time.gmtime()),self.configuration.data) | 379 | bb.data.setVar("BUILDSTART", time.strftime('%m/%d/%Y %H:%M:%S',time.gmtime()),self.configuration.data) |
379 | 380 | ||
380 | def buildFile(self, buildfile): | 381 | def matchFile(self, buildfile): |
381 | """ | 382 | """ |
382 | Build the file matching regexp buildfile | 383 | Convert the fragment buildfile into a real file |
384 | Error if there are too many matches | ||
383 | """ | 385 | """ |
384 | |||
385 | bf = os.path.abspath(buildfile) | 386 | bf = os.path.abspath(buildfile) |
386 | try: | 387 | try: |
387 | os.stat(bf) | 388 | os.stat(bf) |
389 | return bf | ||
388 | except OSError: | 390 | except OSError: |
389 | (filelist, masked) = self.collect_bbfiles() | 391 | (filelist, masked) = self.collect_bbfiles() |
390 | regexp = re.compile(buildfile) | 392 | regexp = re.compile(buildfile) |
@@ -398,7 +400,14 @@ class BBCooker: | |||
398 | for f in matches: | 400 | for f in matches: |
399 | bb.msg.error(bb.msg.domain.Parsing, " %s" % f) | 401 | bb.msg.error(bb.msg.domain.Parsing, " %s" % f) |
400 | sys.exit(1) | 402 | sys.exit(1) |
401 | bf = matches[0] | 403 | return matches[0] |
404 | |||
405 | def buildFile(self, buildfile): | ||
406 | """ | ||
407 | Build the file matching regexp buildfile | ||
408 | """ | ||
409 | |||
410 | bf = self.matchFile(buildfile) | ||
402 | 411 | ||
403 | bbfile_data = bb.parse.handle(bf, self.configuration.data) | 412 | bbfile_data = bb.parse.handle(bf, self.configuration.data) |
404 | 413 | ||
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 9782c9f546..b2025f0694 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
@@ -288,6 +288,10 @@ def expandKeys(alterdata, readdata = None): | |||
288 | src = getVarFlag(key, i, readdata) or [] | 288 | src = getVarFlag(key, i, readdata) or [] |
289 | dest.extend(src) | 289 | dest.extend(src) |
290 | setVarFlag(ekey, i, dest, alterdata) | 290 | setVarFlag(ekey, i, dest, alterdata) |
291 | |||
292 | if key in alterdata._special_values[i]: | ||
293 | alterdata._special_values[i].remove(key) | ||
294 | alterdata._special_values[i].add(ekey) | ||
291 | 295 | ||
292 | delVar(key, alterdata) | 296 | delVar(key, alterdata) |
293 | 297 | ||
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index f739245bd1..229b28c19d 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py | |||
@@ -182,8 +182,21 @@ def get_srcrev(d): | |||
182 | if len(scms) == 1: | 182 | if len(scms) == 1: |
183 | return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d) | 183 | return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d) |
184 | 184 | ||
185 | bb.msg.error(bb.msg.domain.Fetcher, "Sorry, support for SRCREV_FORMAT still needs to be written") | 185 | # |
186 | raise ParameterError | 186 | # Mutiple SCMs are in SRC_URI so we resort to SRCREV_FORMAT |
187 | # | ||
188 | format = bb.data.getVar('SRCREV_FORMAT', d, 1) | ||
189 | if not format: | ||
190 | bb.msg.error(bb.msg.domain.Fetcher, "The SRCREV_FORMAT variable must be set when multiple SCMs are used.") | ||
191 | raise ParameterError | ||
192 | |||
193 | for scm in scms: | ||
194 | if 'name' in urldata[scm].parm: | ||
195 | name = urldata[scm].parm["name"] | ||
196 | rev = urldata[scm].method.sortable_revision(scm, urldata[scm], d) | ||
197 | format = format.replace(name, rev) | ||
198 | |||
199 | return format | ||
187 | 200 | ||
188 | def localpath(url, d, cache = True): | 201 | def localpath(url, d, cache = True): |
189 | """ | 202 | """ |
diff --git a/bitbake/lib/bb/fetch/local.py b/bitbake/lib/bb/fetch/local.py index 9be8f1ce4b..5e480a208e 100644 --- a/bitbake/lib/bb/fetch/local.py +++ b/bitbake/lib/bb/fetch/local.py | |||
@@ -38,9 +38,11 @@ class Local(Fetch): | |||
38 | return urldata.type in ['file','patch'] | 38 | return urldata.type in ['file','patch'] |
39 | 39 | ||
40 | def localpath(self, url, urldata, d): | 40 | def localpath(self, url, urldata, d): |
41 | """Return the local filename of a given url assuming a successful fetch. | 41 | """ |
42 | Return the local filename of a given url assuming a successful fetch. | ||
42 | """ | 43 | """ |
43 | path = url.split("://")[1] | 44 | path = url.split("://")[1] |
45 | path = path.split(";")[0] | ||
44 | newpath = path | 46 | newpath = path |
45 | if path[0] != "/": | 47 | if path[0] != "/": |
46 | filespath = data.getVar('FILESPATH', d, 1) | 48 | filespath = data.getVar('FILESPATH', d, 1) |