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

2020-02-05 Thread Martin Hundebøll




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 
Signed-off-by: Mark Hatle 
---
  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]


--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


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

2020-02-05 Thread Jaewon Lee
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 
Signed-off-by: Mark Hatle 
---
 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)
 components[2] = components[2][:avail]
 components[3] = components[3][:avail]
 components[4] = components[4][:avail]
-- 
2.7.4

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core