[bitbake-devel] [PATCH 2/7] runqueue: Streamline outright setscene failure handling

Richard Purdie richard.purdie at linuxfoundation.org
Fri Jul 12 22:39:38 UTC 2019


On Fri, 2019-07-12 at 14:13 +0100, Richard Purdie wrote:
> With the recent codebase changes we can just call the outrightfail
> function immediately, removing some intermediate data structures.
> 
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
>  lib/bb/runqueue.py | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
> index 48b668abc1..2d52ef3190 100644
> --- a/lib/bb/runqueue.py
> +++ b/lib/bb/runqueue.py
> @@ -1913,9 +1913,6 @@ class RunQueueExecute:
>                              self.sq_task_skip(nexttask)
>                              self.scenequeue_notneeded.add(nexttask)
>                              return True
> -                    if nexttask in self.sqdata.outrightfail:
> -                        self.sq_task_failoutright(nexttask)
> -                        return True
>                      task = nexttask
>                      break
>          if task is not None:
> @@ -2330,8 +2327,6 @@ class SQData(object):
>          self.stamps = {}
>          # Setscene tasks directly depended upon by the build
>          self.unskippable = set()
> -        # List of setscene tasks which aren't present
> -        self.outrightfail = []
>          # A list of normal tasks a setscene task covers
>          self.sq_covered_tasks = {}
>  
> @@ -2553,7 +2548,7 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq):
>          for tid in sqdata.sq_revdeps:
>              if tid not in valid_new and tid not in noexec:
>                  logger.debug(2, 'No package found, so skipping setscene task %s', tid)
> -                sqdata.outrightfail.append(tid)
> +                sqrq.sq_task_failoutright(tid)
>  
>  class TaskFailure(Exception):
>      """

I'm going to NAK my own patch. There is logic inbetween these two
points which may end up covering the task without it needing to run. In
particular do_shared_workdir in the kernel never has a valid sstate
artefact and this change causes eSDK to break *if and only if* that
task hasn't already been run in a given build directory.

This did result in a single failure on the autobuilder but shows how
much fun this code is.

I'll ponder this further, its likely going to be better to pass around
the "valid" list and totally streamline and rewrite some horrible code
here.

Cheers,

Richard





More information about the bitbake-devel mailing list