[oe] [PATCH] sstate.bbclass: Add progress bars when removing from the sysroots

Peter Kjellerstedt peter.kjellerstedt at axis.com
Thu Dec 7 14:51:26 UTC 2017


And this was of course intended to go to the openembedded-core list.

//Peter

> -----Original Message-----
> From: openembedded-devel-bounces at lists.openembedded.org
> [mailto:openembedded-devel-bounces at lists.openembedded.org] On Behalf Of
> Peter Kjellerstedt
> Sent: den 7 december 2017 15:40
> To: openembedded-devel at lists.openembedded.org
> Subject: [oe] [PATCH] sstate.bbclass: Add progress bars when removing
> from the sysroots
> 
> If there are many recipes that should be cleaned out from the
> sysroots, it can actually take some time. This adds a progress bar to
> give a visual clue that the clean up is actually progressing.
> 
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt at axis.com>
> ---
>  meta/classes/sstate.bbclass | 36 ++++++++++++++++++++++--------------
>  1 file changed, 22 insertions(+), 14 deletions(-)
> 
> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
> index e30fbe1280..6e41b56861 100644
> --- a/meta/classes/sstate.bbclass
> +++ b/meta/classes/sstate.bbclass
> @@ -845,7 +845,7 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash,
> sq_hashfn, d, siginfo=False):
>                  missed.append(task)
>                  bb.debug(2, "SState: Unsuccessful fetch test for %s" %
> srcuri)
>                  pass
> -            bb.event.fire(bb.event.ProcessProgress("Checking sstate
> mirror object availability", len(tasklist) -
> thread_worker.tasks.qsize()), d)
> +            bb.event.fire(bb.event.ProcessProgress(msg, len(tasklist)
> - thread_worker.tasks.qsize()), d)
> 
>          tasklist = []
>          for task in range(len(sq_fn)):
> @@ -856,7 +856,8 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash,
> sq_hashfn, d, siginfo=False):
>              tasklist.append((task, sstatefile))
> 
>          if tasklist:
> -            bb.event.fire(bb.event.ProcessStarted("Checking sstate
> mirror object availability", len(tasklist)), d)
> +            msg = "Checking sstate mirror object availability"
> +            bb.event.fire(bb.event.ProcessStarted(msg, len(tasklist)),
> d)
> 
>              import multiprocessing
>              nproc = min(multiprocessing.cpu_count(), len(tasklist))
> @@ -870,7 +871,7 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash,
> sq_hashfn, d, siginfo=False):
>              pool.wait_completion()
>              bb.event.disable_threadlock()
> 
> -            bb.event.fire(bb.event.ProcessFinished("Checking sstate
> mirror object availability"), d)
> +            bb.event.fire(bb.event.ProcessFinished(msg), d)
> 
>      inheritlist = d.getVar("INHERIT")
>      if "toaster" in inheritlist:
> @@ -1038,18 +1039,25 @@ python sstate_eventhandler2() {
>                          seen.append(stamp)
> 
>          if toremove:
> -            bb.note("There are %d recipes to be removed from sysroot
> %s, removing..." % (len(toremove), a))
> +            msg = "Removing %d recipes from the %s sysroot" %
> (len(toremove), a)
> +            bb.event.fire(bb.event.ProcessStarted(msg, len(toremove)),
> d)
> +
> +            removed = 0
> +            for r in toremove:
> +                (stamp, manifest, workdir) = r.split()
> +                for m in glob.glob(manifest + ".*"):
> +                    if m.endswith(".postrm"):
> +                        continue
> +                    sstate_clean_manifest(m, d)
> +                bb.utils.remove(stamp + "*")
> +                if removeworkdir:
> +                    bb.utils.remove(workdir, recurse = True)
> +                lines.remove(r)
> +                removed = removed + 1
> +                bb.event.fire(bb.event.ProcessProgress(msg, removed),
> d)
> +
> +            bb.event.fire(bb.event.ProcessFinished(msg), d)
> 
> -        for r in toremove:
> -            (stamp, manifest, workdir) = r.split()
> -            for m in glob.glob(manifest + ".*"):
> -                if m.endswith(".postrm"):
> -                    continue
> -                sstate_clean_manifest(m, d)
> -            bb.utils.remove(stamp + "*")
> -            if removeworkdir:
> -                bb.utils.remove(workdir, recurse = True)
> -            lines.remove(r)
>          with open(i, "w") as f:
>              for l in lines:
>                  f.write(l)
> --
> 2.12.0
> 
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel



More information about the Openembedded-devel mailing list