On 08.01.25 16:57, Amy Fong wrote:
> From: Amy Fong <amy.fong@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
This is missing a reason why we want this. I'm also not seeing something
similar in OE.
Jan
>
> Signed-off-by: Amy Fong <amy.fong@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"
--
Siemens AG, Foundational Technologies
Linux Expert Center