On 7/16/19 10:58 AM, Max Reitz wrote: >>> Ah, OK. So, uh, we effectively can’t run any Python tests on macOS? >> >> Not when our CI is set up to use super-long file names: >> >> + File >> "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/../../python/qemu/machine.py", >> line 294, in launch > > That isn’t really long.
The MacOS limit is 104 (or 103 if you insist on using the trailing NUL yourself), compared to Linux at 108 (107). And: $ printf "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/scratch/name" | wc -c 104 shows that we are right on the verge of overflowing the space allotted, with any socket name worth using when the socket lives inside qemu-iotests/scratch. > >> Is there any way to create our sockets somewhere under /tmp instead of >> inside tests/qemu-iotests, so that we have a shorter filename for >> sockets no matter how deep in the file hierarchy the tests themselves live? >> >> Also, at one point, we tossed around the idea of >> s/qemu-iotests/iotests/, to shave off 5 characters that don't really add >> anything. > > I’d personally rather just skip the iotests if we detect such a silly > OS, but maybe that’s just me. It's a rather unfortunate limit, but it's not all that silly (the limit is based on the fact that struct sockaddr has to fit inside a nice power-of-2 structure somewhere in the kernel, and enough else is used that you really are left with just 104/108 bytes, or even 92 bytes if you use HP-UX 11). POSIX does not place a minimum length on sun_path, but I know of no system that does not allow at least 92 bytes, if you are aiming for a portably-small name. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
