diff options
| author | Richard Purdie <richard@openedhand.com> | 2008-01-06 16:51:51 +0000 |
|---|---|---|
| committer | Richard Purdie <richard@openedhand.com> | 2008-01-06 16:51:51 +0000 |
| commit | 7821f2250d16e24097d973c34197db7fd60bc51a (patch) | |
| tree | a65ca61381af497265f02b5363196b36fe1b0150 /bitbake/lib/bb/cooker.py | |
| parent | c7fca99aab060efe14332ce6d913bc7d346a4478 (diff) | |
| download | poky-7821f2250d16e24097d973c34197db7fd60bc51a.tar.gz | |
bitbake: Sync with bitbake upstream for various fixes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@3411 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index c16709e552..c6597c52f9 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -67,6 +67,10 @@ class BBCooker: | |||
| 67 | if not self.configuration.cmd: | 67 | if not self.configuration.cmd: |
| 68 | self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data) or "build" | 68 | self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data) or "build" |
| 69 | 69 | ||
| 70 | bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True) | ||
| 71 | if bbpkgs: | ||
| 72 | self.configuration.pkgs_to_build.extend(bbpkgs.split()) | ||
| 73 | |||
| 70 | # | 74 | # |
| 71 | # Special updated configuration we use for firing events | 75 | # Special updated configuration we use for firing events |
| 72 | # | 76 | # |
| @@ -158,29 +162,68 @@ class BBCooker: | |||
| 158 | prefstr) | 162 | prefstr) |
| 159 | 163 | ||
| 160 | 164 | ||
| 161 | def showEnvironment( self ): | 165 | def showEnvironment(self , buildfile = None, pkgs_to_build = []): |
| 162 | """Show the outer or per-package environment""" | 166 | """ |
| 163 | if self.configuration.buildfile: | 167 | Show the outer or per-package environment |
| 168 | """ | ||
| 169 | fn = None | ||
| 170 | envdata = None | ||
| 171 | |||
| 172 | if 'world' in pkgs_to_build: | ||
| 173 | print "'world' is not a valid target for --environment." | ||
| 174 | sys.exit(1) | ||
| 175 | |||
| 176 | if len(pkgs_to_build) > 1: | ||
| 177 | print "Only one target can be used with the --environment option." | ||
| 178 | sys.exit(1) | ||
| 179 | |||
| 180 | if buildfile: | ||
| 181 | if len(pkgs_to_build) > 0: | ||
| 182 | print "No target should be used with the --environment and --buildfile options." | ||
| 183 | sys.exit(1) | ||
| 164 | self.cb = None | 184 | self.cb = None |
| 165 | self.bb_cache = bb.cache.init(self) | 185 | self.bb_cache = bb.cache.init(self) |
| 166 | bf = self.matchFile(self.configuration.buildfile) | 186 | fn = self.matchFile(buildfile) |
| 187 | elif len(pkgs_to_build) == 1: | ||
| 188 | self.updateCache() | ||
| 189 | |||
| 190 | localdata = data.createCopy(self.configuration.data) | ||
| 191 | bb.data.update_data(localdata) | ||
| 192 | bb.data.expandKeys(localdata) | ||
| 193 | |||
| 194 | taskdata = bb.taskdata.TaskData(self.configuration.abort) | ||
| 195 | |||
| 196 | try: | ||
| 197 | taskdata.add_provider(localdata, self.status, pkgs_to_build[0]) | ||
| 198 | taskdata.add_unresolved(localdata, self.status) | ||
| 199 | except bb.providers.NoProvider: | ||
| 200 | sys.exit(1) | ||
| 201 | |||
| 202 | targetid = taskdata.getbuild_id(pkgs_to_build[0]) | ||
| 203 | fnid = taskdata.build_targets[targetid][0] | ||
| 204 | fn = taskdata.fn_index[fnid] | ||
| 205 | else: | ||
| 206 | envdata = self.configuration.data | ||
| 207 | |||
| 208 | if fn: | ||
| 167 | try: | 209 | try: |
| 168 | self.configuration.data = self.bb_cache.loadDataFull(bf, self.configuration.data) | 210 | envdata = self.bb_cache.loadDataFull(fn, self.configuration.data) |
| 169 | except IOError, e: | 211 | except IOError, e: |
| 170 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % (bf, e)) | 212 | bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % (fn, e)) |
| 171 | except Exception, e: | 213 | except Exception, e: |
| 172 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) | 214 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) |
| 215 | |||
| 173 | # emit variables and shell functions | 216 | # emit variables and shell functions |
| 174 | try: | 217 | try: |
| 175 | data.update_data( self.configuration.data ) | 218 | data.update_data( envdata ) |
| 176 | data.emit_env(sys.__stdout__, self.configuration.data, True) | 219 | data.emit_env(sys.__stdout__, envdata, True) |
| 177 | except Exception, e: | 220 | except Exception, e: |
| 178 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) | 221 | bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e) |
| 179 | # emit the metadata which isnt valid shell | 222 | # emit the metadata which isnt valid shell |
| 180 | data.expandKeys( self.configuration.data ) | 223 | data.expandKeys( envdata ) |
| 181 | for e in self.configuration.data.keys(): | 224 | for e in envdata.keys(): |
| 182 | if data.getVarFlag( e, 'python', self.configuration.data ): | 225 | if data.getVarFlag( e, 'python', envdata ): |
| 183 | sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, data.getVar(e, self.configuration.data, 1))) | 226 | sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, data.getVar(e, envdata, 1))) |
| 184 | 227 | ||
| 185 | def generateDotGraph( self, pkgs_to_build, ignore_deps ): | 228 | def generateDotGraph( self, pkgs_to_build, ignore_deps ): |
| 186 | """ | 229 | """ |
| @@ -338,8 +381,6 @@ class BBCooker: | |||
| 338 | except ImportError, details: | 381 | except ImportError, details: |
| 339 | bb.msg.fatal(bb.msg.domain.Parsing, "Sorry, shell not available (%s)" % details ) | 382 | bb.msg.fatal(bb.msg.domain.Parsing, "Sorry, shell not available (%s)" % details ) |
| 340 | else: | 383 | else: |
| 341 | bb.data.update_data( self.configuration.data ) | ||
| 342 | bb.data.expandKeys( self.configuration.data ) | ||
| 343 | shell.start( self ) | 384 | shell.start( self ) |
| 344 | sys.exit( 0 ) | 385 | sys.exit( 0 ) |
| 345 | 386 | ||
| @@ -519,7 +560,7 @@ class BBCooker: | |||
| 519 | """ | 560 | """ |
| 520 | 561 | ||
| 521 | if self.configuration.show_environment: | 562 | if self.configuration.show_environment: |
| 522 | self.showEnvironment() | 563 | self.showEnvironment(self.configuration.buildfile, self.configuration.pkgs_to_build) |
| 523 | sys.exit( 0 ) | 564 | sys.exit( 0 ) |
| 524 | 565 | ||
| 525 | self.buildSetVars() | 566 | self.buildSetVars() |
| @@ -539,11 +580,7 @@ class BBCooker: | |||
| 539 | 580 | ||
| 540 | pkgs_to_build = self.configuration.pkgs_to_build | 581 | pkgs_to_build = self.configuration.pkgs_to_build |
| 541 | 582 | ||
| 542 | bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, 1) | 583 | if len(pkgs_to_build) == 0 and not self.configuration.show_versions: |
| 543 | if bbpkgs: | ||
| 544 | pkgs_to_build.extend(bbpkgs.split()) | ||
| 545 | if len(pkgs_to_build) == 0 and not self.configuration.show_versions \ | ||
| 546 | and not self.configuration.show_environment: | ||
| 547 | print "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help'" | 584 | print "Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help'" |
| 548 | print "for usage information." | 585 | print "for usage information." |
| 549 | sys.exit(0) | 586 | sys.exit(0) |
