On Wed, Mar 05, 2025 at 12:32:31PM +0100, Thomas Huth wrote: > On 28/02/2025 11.27, Daniel P. Berrangé wrote: > > If the QEMU binary was built for a 32-bit ELF target we cannot run the > > memory address space tests as they all require ability to address more > > RAM that can be represented on 32-bit. > > > > We can't use a decorator to skip the tests as we need setUp() to run to > > pick the QEMU binary, thus we must call a method at the start of each > > test to check and skip it. The functional result is effectively the > > same as using a decorator, just less pretty. This code will go away when > > 32-bit hosts are full dropped from QEMU. > > > > The code allows any non-ELF target since all macOS versions supported > > at 64-bit only and we already dropped support for 32-bit Windows. > > > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> > > --- > > tests/functional/test_mem_addr_space.py | 34 +++++++++++++++++++++++++ > > 1 file changed, 34 insertions(+) > > > > diff --git a/tests/functional/test_mem_addr_space.py > > b/tests/functional/test_mem_addr_space.py > > index bb0cf062ca..c8bde77e51 100755 > > --- a/tests/functional/test_mem_addr_space.py > > +++ b/tests/functional/test_mem_addr_space.py > > @@ -20,6 +20,25 @@ class MemAddrCheck(QemuSystemTest): > > # this reason. > > DELAY_Q35_BOOT_SEQUENCE = 1 > > + # This helper can go away when the 32-bit host deprecation > > + # turns into full & final removal of support. > > + def ensure_64bit_binary(self): > > + with open(self.qemu_bin, "rb") as fh: > > + ident = fh.read(4) > > + > > + # "\x7fELF" > > + if ident != bytes([0x7f, 0x45, 0x4C, 0x46]): > > + # Non-ELF file implies macOS or Windows which > > + # we already assume to be 64-bit only > > + return > > + > > + # bits == 1 -> 32-bit; bits == 2 -> 64-bit > > + bits = int.from_bytes(fh.read(1)) > > This unfortunately fails in the Centos CI job (so I guess there's something > different with Python 3.8): > > https://gitlab.com/thuth/qemu/-/jobs/9316861212#L131 > > Looking at the test log: > > Traceback (most recent call last): > File "/builds/thuth/qemu/tests/functional/test_mem_addr_space.py", line > 335, in test_phybits_ok_tcg_q35_intel_cxl > self.ensure_64bit_binary() > File "/builds/thuth/qemu/tests/functional/test_mem_addr_space.py", line > 36, in ensure_64bit_binary > bits = int.from_bytes(fh.read(1)) > TypeError: from_bytes() missing required argument 'byteorder' (pos 2) > > Could you please have a look?
It will want bits = int.from_bytes(fh.read(1), byteorder='little') >From the docs https://docs.python.org/3/library/stdtypes.html#int.from_bytes 'byteorder' gained default value only in py 3.11, so that explains the cnetos failure with 3.8 With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|