[bitbake-devel] [PATCH] siggen: Fix a subtle bug in hash calculation for shared work tasks
Peter Kjellerstedt
peter.kjellerstedt at axis.com
Mon Aug 25 15:02:16 UTC 2014
> -----Original Message-----
> From: bitbake-devel-bounces at lists.openembedded.org [mailto:bitbake-
> devel-bounces at lists.openembedded.org] On Behalf Of Richard Purdie
> Sent: den 23 augusti 2014 10:23
> To: bitbake-devel
> Subject: [bitbake-devel] [PATCH] siggen: Fix a subtle bug in hash
> calculation for shared work tasks
>
>
> With a shared work task like gcc, the task can be run from a variety of
> different recipes which may have different virtual extensions in place.
>
> Depending on whether gcc-runtime or nativesdk-gcc-runtime's
> do_preconfigure
> task is called for example will change the sorting of the task hashes
> due
> to the way clean_basename currently works.
>
> The correct thing to do here is sort on the base filename first, then
> any
> extension when ordering the hashes. This means we do account for things
> like recipes with both a native and non-native dependency but we also
> fix
> the shared work case where we don't care whether it was a virtual
> version
> or not.
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
> index 933311c..548f50d 100644
> --- a/bitbake/lib/bb/siggen.py
> +++ b/bitbake/lib/bb/siggen.py
> @@ -295,7 +295,7 @@ def dump_this_task(outfile, d):
>
> def clean_basepath(a):
> if a.startswith("virtual:"):
> - b = a.rsplit(":", 1)[0] + ":" + a.rsplit("/", 1)[1]
> + b = a.rsplit("/", 1)[1] + ":" + a.rsplit(":", 1)[0]
> else:
> b = a.rsplit("/", 1)[1]
> return b
After the rewrite above, this can be simplified as:
def clean_basepath(a):
b = a.rsplit("/", 1)[1]
if a.startswith("virtual:"):
b += ":" + a.rsplit(":", 1)[0]
return b
//Peter
More information about the bitbake-devel
mailing list