On Fri, Dec 06, 2019 at 09:27:23AM -0500, Cleber Rosa wrote: > On Wed, Nov 27, 2019 at 02:10:38PM +0400, Marc-André Lureau wrote: > > Use int.from_bytes() from python 3.2 instead. > > > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > --- > > scripts/analyze-migration.py | 35 +++++++++++++++++++---------------- > > 1 file changed, 19 insertions(+), 16 deletions(-) > > > > diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py > > index 2b835d9b70..96a31d3974 100755 > > --- a/scripts/analyze-migration.py > > +++ b/scripts/analyze-migration.py > > @@ -1,4 +1,4 @@ > > -#!/usr/bin/env python > > +#!/usr/bin/env python3 [...] > > Marc-André, I couldn't yet pinpoint the reason yet, but this patch > changes the parsing of bool fields. This is a diff between the output > pre/post this patch on the same images: > > $ diff -u out_x8664_pre out_x8664_post > --- out_x8664_pre 2019-12-06 09:14:16.128943264 -0500 > +++ out_x8664_post 2019-12-06 09:23:35.861378600 -0500 > @@ -3039,7 +3039,7 @@ > "mac_reg[RADV]": "0x00000000", > "mac_reg[TADV]": "0x00000000", > "mac_reg[ITR]": "0x00000000", > - "mit_irq_level": true > + "mit_irq_level": false > }, > "e1000/full_mac_state": { > "mac_reg": [ > @@ -36010,10 +36010,10 @@ > ], > "smb_auxctl": "0x02", > "smb_blkdata": "0x00", > - "i2c_enable": true, > + "i2c_enable": false, > "op_done": true, > - "in_i2c_block_read": true, > - "start_transaction_on_status_read": true > + "in_i2c_block_read": false, > + "start_transaction_on_status_read": false > }, > "ar.tmr.timer": "ff ff ff ff ff ff ff ff", > "ar.tmr.overflow_time": "0x0000000000000000", > > This true/false flipping is consistent across various images (tried on > images generated on a few other targets).
It looks like moving to python3 accidentally fixes a bug. This is VMSDFieldBool.read: def read(self): super(VMSDFieldBool, self).read() if self.data[0] == 0: self.data = False else: self.data = True return self.data On python2, MigrationFile.readvar() returned a string, so the (self.data[0] == 0) check was never true. This means all boolean fields were always initialized to True. On python3, MigrationFile.readvar() returns a bytearray, so the (self.data[0] == 0) check now works as expected. -- Eduardo