[OE-core] [PATCH] sstate.bbclass: fix issue while handling long sstate filenames

Martin Hundebøll martin at geanix.com
Thu Feb 6 07:52:52 UTC 2020



On 06/02/2020 01.57, Jaewon Lee wrote:
> When moving to python3, divison using '/' now returns float instead of
> an integer. In upstream commit b8025e972081b70960ffcbcbe43a7118041556a1
> sstate filenames longer than the limit are changed to just include
> necessary info + 3 fields just for information. The space left over
> after the necessary info is divided into 3 for each of the fields.
> Casting the outcome of that division to int to solve the following error
> message:
> 
> avail = (254 - len(hash + "_" + taskname + extension) -
> len(components[0]) - len(components[1]) - len(components[5]) -
> len(components[6]) - 7) / 3
>      >        components[2] = components[2][:avail]
>               components[3] = components[3][:avail]
> TypeError: slice indices must be integers or None or have an __index__
> method
> 
> Signed-off-by: Jaewon Lee <jaewon.lee at xilinx.com>
> Signed-off-by: Mark Hatle <mark.hatle at xilinx.com>
> ---
>   meta/classes/sstate.bbclass | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
> index faa6470..53a6d06 100644
> --- a/meta/classes/sstate.bbclass
> +++ b/meta/classes/sstate.bbclass
> @@ -20,7 +20,7 @@ def generate_sstatefn(spec, hash, taskname, siginfo, d):
>           components = spec.split(":")
>           # Fields 0,5,6 are mandatory, 1 is most useful, 2,3,4 are just for information
>           # 7 is for the separators
> -        avail = (254 - len(hash + "_" + taskname + extension) - len(components[0]) - len(components[1]) - len(components[5]) - len(components[6]) - 7) / 3
> +        avail = int((254 - len(hash + "_" + taskname + extension) - len(components[0]) - len(components[1]) - len(components[5]) - len(components[6]) - 7) / 3)

Python has a nifty // operator that resembles integer division from C:

 >>> 3 / 2

1.5

 >>> 3 // 2

1


// Martin

>           components[2] = components[2][:avail]
>           components[3] = components[3][:avail]
>           components[4] = components[4][:avail]
> 


More information about the Openembedded-core mailing list