From: Amy Fong <
amy....@siemens.com>
On a build, create a directory that gets populated
with temp directories of recipes that fail to build.
The variable ERROR_DIR defines this directory, defaults
to ${TOPDIR}/errorLogs
Signed-off-by: Amy Fong <
amy....@siemens.com>
---
bitbake/lib/bb/build.py | 10 ++++++++++
bitbake/lib/bb/runqueue.py | 6 ++++++
meta/conf/bitbake.conf | 2 ++
3 files changed, 18 insertions(+)
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 44d08f5c..1c8ad032 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -25,6 +25,7 @@ import bb
import bb.msg
import bb.process
import bb.progress
+import shutil
from io import StringIO
from bb import data, event, utils
@@ -103,6 +104,15 @@ class TaskFailed(TaskBase):
def __init__(self, task, fn, logfile, metadata, errprinted = False):
self.errprinted = errprinted
super(TaskFailed, self).__init__(task, fn, logfile, metadata)
+ d = metadata
+ errorDir = d.getVar('ERROR_DIR')
+ if errorDir is not None:
+ pkg = d.getVar("PF")
+ newtmp = os.path.join(errorDir, pkg)
+ if os.path.exists(newtmp):
+ shutil.rmtree(newtmp)
+ tempdir = d.getVar('T')
+ shutil.copytree(tempdir, newtmp)
class TaskFailedSilent(TaskBase):
"""Task execution failed (silently)"""
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index bc7e1817..a77749c3 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -25,6 +25,7 @@ from multiprocessing import Process
import shlex
import pprint
import time
+import shutil
bblogger = logging.getLogger("BitBake")
logger = logging.getLogger("BitBake.RunQueue")
@@ -1334,6 +1335,11 @@ class RunQueue:
self.rqexe = None
self.worker = {}
self.fakeworker = {}
+ errorDir = self.cfgData.getVar('ERROR_DIR')
+ if errorDir is not None:
+ if os.path.exists(errorDir):
+ shutil.rmtree(errorDir)
+ os.mkdir(errorDir)
@staticmethod
def send_pickled_data(worker, data, name):
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index ef408faa..f345b9cb 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -200,3 +200,5 @@ PATCHRESOLVE ?= "noop"
PREFERRED_PROVIDER_bootstrap-host ??= "isar-mmdebstrap-host"
PREFERRED_PROVIDER_bootstrap-target ??= "isar-mmdebstrap-target"
+
+ERROR_DIR ?= "${TOPDIR}/errorLogs"
--
2.39.5