summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Bradford <rob@linux.intel.com>2008-10-28 11:27:58 +0000
committerRob Bradford <rob@linux.intel.com>2008-10-28 11:40:03 +0000
commit0b6fdfb14d7de5d087055574beb3abfd7d9e6931 (patch)
tree8de03f9c2944de43908602ad59d5c5fb27c9b44e
parent0b9da42bb5c2355fe6b2a71f3a4970ac46118caa (diff)
downloadopenembedded-core-0b6fdfb14d7de5d087055574beb3abfd7d9e6931.tar.gz
openembedded-core-0b6fdfb14d7de5d087055574beb3abfd7d9e6931.tar.bz2
openembedded-core-0b6fdfb14d7de5d087055574beb3abfd7d9e6931.zip
bitbake-dev: Refactor configuration file parsing
Separate the parsing of the configuration files / recipes into a separate function to the parsing of the command line. This parsing of the configuration files now happens when updateCache() is called. Some functionality has been moved from parseConfiguration() to __init__.
-rw-r--r--bitbake-dev/lib/bb/cooker.py56
1 files changed, 26 insertions, 30 deletions
diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py
index c9afadbc97..6dde5de0f8 100644
--- a/bitbake-dev/lib/bb/cooker.py
+++ b/bitbake-dev/lib/bb/cooker.py
@@ -86,10 +86,31 @@ class BBCooker:
self.configuration.data = bb.data.init()
- def parseConfiguration(self):
-
bb.data.inheritFromOS(self.configuration.data)
+ # TOSTOP must not be set or our children will hang when they output
+ fd = sys.stdout.fileno()
+ if os.isatty(fd):
+ import termios
+ tcattr = termios.tcgetattr(fd)
+ if tcattr[3] & termios.TOSTOP:
+ bb.msg.note(1, bb.msg.domain.Build, "The terminal had the TOSTOP bit set, clearing...")
+ tcattr[3] = tcattr[3] & ~termios.TOSTOP
+ termios.tcsetattr(fd, termios.TCSANOW, tcattr)
+
+ self.command = bb.command.Command(self)
+ self.cookerIdle = True
+ self.cookerState = cookerClean
+ self.cookerAction = cookerRun
+ self.server.register_idle_function(self.runCommands, self)
+
+ def parseConfiguration(self):
+ #
+ # Special updated configuration we use for firing events
+ #
+ self.configuration.event_data = bb.data.createCopy(self.configuration.data)
+ bb.data.update_data(self.configuration.event_data)
+
for f in self.configuration.file:
self.parseConfigurationFile( f )
@@ -102,29 +123,14 @@ class BBCooker:
if bbpkgs:
self.configuration.pkgs_to_build.extend(bbpkgs.split())
- #
- # Special updated configuration we use for firing events
- #
- self.configuration.event_data = bb.data.createCopy(self.configuration.data)
- bb.data.update_data(self.configuration.event_data)
-
- # TOSTOP must not be set or our children will hang when they output
- fd = sys.stdout.fileno()
- if os.isatty(fd):
- import termios
- tcattr = termios.tcgetattr(fd)
- if tcattr[3] & termios.TOSTOP:
- bb.msg.note(1, bb.msg.domain.Build, "The terminal had the TOSTOP bit set, clearing...")
- tcattr[3] = tcattr[3] & ~termios.TOSTOP
- termios.tcsetattr(fd, termios.TCSANOW, tcattr)
-
# Change nice level if we're asked to
nice = bb.data.getVar("BB_NICE_LEVEL", self.configuration.data, True)
if nice:
curnice = os.nice(0)
nice = int(nice) - curnice
bb.msg.note(2, bb.msg.domain.Build, "Renice to %s " % os.nice(nice))
-
+
+ def parseCommandLine(self):
# Parse any commandline into actions
if self.configuration.show_environment:
self.commandlineAction = None
@@ -156,17 +162,6 @@ class BBCooker:
self.commandlineAction = None
bb.error("Nothing to do. Use 'bitbake world' to build everything, or run 'bitbake --help' for usage information.")
- # FIXME - implement
- #if self.configuration.interactive:
- # self.interactiveMode()
-
- self.command = bb.command.Command(self)
- self.cookerIdle = True
- self.cookerState = cookerClean
- self.cookerAction = cookerRun
- self.server.register_idle_function(self.runCommands, self)
-
-
def runCommands(self, server, data, abort):
"""
Run any queued asynchronous command
@@ -731,6 +726,7 @@ class BBCooker:
def updateCache(self):
+ self.parseConfiguration ()
if self.cookerState == cookerParsed:
return