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

Submitted by Richard Purdie on July 12, 2019, 1:13 p.m. | Patch ID: 163025

Details

Message ID 20190712131349.29918-2-richard.purdie@linuxfoundation.org
State New
Headers show

Commit Message

Richard Purdie July 12, 2019, 1:13 p.m.
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@linuxfoundation.org>
---
 lib/bb/runqueue.py | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

Patch hide | download patch | download mbox

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):
     """

Comments

Richard Purdie July 12, 2019, 10:39 p.m.
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@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