Failure during build of Python 3.8 via cygport

Mark Geisert mark@maxrnd.com
Sun Dec 13 08:52:34 GMT 2020


Mark Geisert wrote:
> This seems to be a problem setting up a platform-specific build directory. The 
> sysconfig.py script wants to use "lib." + platform + pythonversion but the 
> platform string somehow gets corrupted into non-utf8 bytes.  For instance, 
> building Python 3.8 comes up with:
>      lib.cygwin-\365\377\377o-\377o-3.8
> as the directory name.  Broken, but could work.  The build failure happens because 
> the script tries to write this directory name into a file but it's not a valid 
> utf8 string.  The directory name should have been:
>      lib.cygwin-3.2.0-x86_64-3.8

And the corruption is due to something about a recent change to the operation of 
Cygwin's uname() function.  The change was introduced in Cygwin API version 335; 
I'm running 340 on my test machine.  This being a fairly recent change might 
possibly explain why nobody else has run into this issue yet.

Basically, os.uname within Python is calling Cygwin's uname() passing the address 
of a buffer declared to be 'struct utsname'.  The structure layout changed in API 
335.  What I've hit is a mismatch between what Python expects and Cygwin delivers.

I'll move this discussion over to the developers list tomorrow.

..mark


More information about the Cygwin-apps mailing list