diff options
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index daa00a45d0..7034f1d718 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -93,22 +93,6 @@ class BBCooker: | |||
| 93 | 93 | ||
| 94 | self.configuration = configuration | 94 | self.configuration = configuration |
| 95 | 95 | ||
| 96 | self.caches_array = [] | ||
| 97 | |||
| 98 | caches_name_array = ['bb.cache:CoreRecipeInfo'] + configuration.extra_caches | ||
| 99 | |||
| 100 | # At least CoreRecipeInfo will be loaded, so caches_array will never be empty! | ||
| 101 | # This is the entry point, no further check needed! | ||
| 102 | for var in caches_name_array: | ||
| 103 | try: | ||
| 104 | module_name, cache_name = var.split(':') | ||
| 105 | module = __import__(module_name, fromlist=(cache_name,)) | ||
| 106 | self.caches_array.append(getattr(module, cache_name)) | ||
| 107 | except ImportError as exc: | ||
| 108 | logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc)) | ||
| 109 | sys.exit("FATAL: Failed to import extra cache class '%s'." % cache_name) | ||
| 110 | |||
| 111 | self.data = None | ||
| 112 | self.loadConfigurationData() | 96 | self.loadConfigurationData() |
| 113 | 97 | ||
| 114 | # Take a lock so only one copy of bitbake can run against a given build | 98 | # Take a lock so only one copy of bitbake can run against a given build |
| @@ -118,13 +102,6 @@ class BBCooker: | |||
| 118 | if not self.lock: | 102 | if not self.lock: |
| 119 | bb.fatal("Only one copy of bitbake should be run against a build directory") | 103 | bb.fatal("Only one copy of bitbake should be run against a build directory") |
| 120 | 104 | ||
| 121 | # | ||
| 122 | # Special updated configuration we use for firing events | ||
| 123 | # | ||
| 124 | self.event_data = bb.data.createCopy(self.data) | ||
| 125 | bb.data.update_data(self.event_data) | ||
| 126 | bb.parse.init_parser(self.event_data) | ||
| 127 | |||
| 128 | # TOSTOP must not be set or our children will hang when they output | 105 | # TOSTOP must not be set or our children will hang when they output |
| 129 | fd = sys.stdout.fileno() | 106 | fd = sys.stdout.fileno() |
| 130 | if os.isatty(fd): | 107 | if os.isatty(fd): |
| @@ -141,6 +118,23 @@ class BBCooker: | |||
| 141 | self.parser = None | 118 | self.parser = None |
| 142 | 119 | ||
| 143 | def initConfigurationData(self): | 120 | def initConfigurationData(self): |
| 121 | |||
| 122 | self.state = state.initial | ||
| 123 | |||
| 124 | self.caches_array = [] | ||
| 125 | caches_name_array = ['bb.cache:CoreRecipeInfo'] + self.configuration.extra_caches | ||
| 126 | |||
| 127 | # At least CoreRecipeInfo will be loaded, so caches_array will never be empty! | ||
| 128 | # This is the entry point, no further check needed! | ||
| 129 | for var in caches_name_array: | ||
| 130 | try: | ||
| 131 | module_name, cache_name = var.split(':') | ||
| 132 | module = __import__(module_name, fromlist=(cache_name,)) | ||
| 133 | self.caches_array.append(getattr(module, cache_name)) | ||
| 134 | except ImportError as exc: | ||
| 135 | logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc)) | ||
| 136 | sys.exit("FATAL: Failed to import extra cache class '%s'." % cache_name) | ||
| 137 | |||
| 144 | self.databuilder = bb.cookerdata.CookerDataBuilder(self.configuration, False) | 138 | self.databuilder = bb.cookerdata.CookerDataBuilder(self.configuration, False) |
| 145 | self.data = self.databuilder.data | 139 | self.data = self.databuilder.data |
| 146 | 140 | ||
| @@ -158,6 +152,13 @@ class BBCooker: | |||
| 158 | self.data = self.databuilder.data | 152 | self.data = self.databuilder.data |
| 159 | self.data_hash = self.databuilder.data_hash | 153 | self.data_hash = self.databuilder.data_hash |
| 160 | 154 | ||
| 155 | # | ||
| 156 | # Special updated configuration we use for firing events | ||
| 157 | # | ||
| 158 | self.event_data = bb.data.createCopy(self.data) | ||
| 159 | bb.data.update_data(self.event_data) | ||
| 160 | bb.parse.init_parser(self.event_data) | ||
| 161 | |||
| 161 | def modifyConfigurationVar(self, var, val, default_file, op): | 162 | def modifyConfigurationVar(self, var, val, default_file, op): |
| 162 | if op == "append": | 163 | if op == "append": |
| 163 | self.appendConfigurationVar(var, val, default_file) | 164 | self.appendConfigurationVar(var, val, default_file) |
| @@ -1246,11 +1247,9 @@ class BBCooker: | |||
| 1246 | self.state = state.stop | 1247 | self.state = state.stop |
| 1247 | 1248 | ||
| 1248 | def initialize(self): | 1249 | def initialize(self): |
| 1249 | self.state = state.initial | ||
| 1250 | self.initConfigurationData() | 1250 | self.initConfigurationData() |
| 1251 | 1251 | ||
| 1252 | def reset(self): | 1252 | def reset(self): |
| 1253 | self.state = state.initial | ||
| 1254 | self.loadConfigurationData() | 1253 | self.loadConfigurationData() |
| 1255 | 1254 | ||
| 1256 | def server_main(cooker, func, *args): | 1255 | def server_main(cooker, func, *args): |
