summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/selftest/cases/reproducible.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py
index 9597d76697..3fb0e5ee5b 100644
--- a/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -239,18 +239,31 @@ class ReproducibleTests(OESelftestTestCase):
239 # may reuse the previous log file so restart the bitbake server. 239 # may reuse the previous log file so restart the bitbake server.
240 bitbake("--kill-server") 240 bitbake("--kill-server")
241 241
242 def print_condensed_error_log(logs, context_lines=10, tail_lines=20):
243 """Prints errors with context and the end of the log."""
244
245 logs = logs.split("\n")
246 for i, line in enumerate(logs):
247 if line.startswith("ERROR"):
248 self.logger.info("Found ERROR (line %d):" % (i + 1))
249 for l in logs[i-context_lines:i+context_lines]:
250 self.logger.info(" " + l)
251
252 self.logger.info("End of log:")
253 for l in logs[-tail_lines:]:
254 self.logger.info(" " + l)
255
242 bitbake_failure_count = 0 256 bitbake_failure_count = 0
243 if not use_sstate: 257 if not use_sstate:
244 if self.sstate_targets: 258 if self.sstate_targets:
245 self.logger.info("Building prebuild for %s (sstate allowed)..." % (name)) 259 self.logger.info("Building prebuild for %s (sstate allowed)..." % (name))
246 self.write_config(config) 260 self.write_config(config)
247 try: 261 try:
248 bitbake("--continue "+' '.join(self.sstate_targets), limit_exc_output=20) 262 bitbake("--continue "+' '.join(self.sstate_targets))
249 except AssertionError as e: 263 except AssertionError as e:
250 bitbake_failure_count += 1 264 bitbake_failure_count += 1
251 self.logger.error("Bitbake failed! but keep going... Log:") 265 self.logger.error("Bitbake failed! but keep going... Log:")
252 for line in str(e).split("\n"): 266 print_condensed_error_log(str(e))
253 self.logger.info(" "+line)
254 267
255 # This config fragment will disable using shared and the sstate 268 # This config fragment will disable using shared and the sstate
256 # mirror, forcing a complete build from scratch 269 # mirror, forcing a complete build from scratch
@@ -264,13 +277,11 @@ class ReproducibleTests(OESelftestTestCase):
264 d = get_bb_vars(capture_vars) 277 d = get_bb_vars(capture_vars)
265 # targets used to be called images 278 # targets used to be called images
266 try: 279 try:
267 bitbake("--continue "+' '.join(getattr(self, 'images', self.targets)), limit_exc_output=20) 280 bitbake("--continue "+' '.join(getattr(self, 'images', self.targets)))
268 except AssertionError as e: 281 except AssertionError as e:
269 bitbake_failure_count += 1 282 bitbake_failure_count += 1
270
271 self.logger.error("Bitbake failed! but keep going... Log:") 283 self.logger.error("Bitbake failed! but keep going... Log:")
272 for line in str(e).split("\n"): 284 print_condensed_error_log(str(e))
273 self.logger.info(" "+line)
274 285
275 # The calling function expects the existence of the deploy 286 # The calling function expects the existence of the deploy
276 # directories containing the packages. 287 # directories containing the packages.