Ma Lin <malin...@163.com> added the comment:
Windows build encountered a similar problem, see issue32394. The solution is to check the runtime system version when importing socket module, if it is an older system, delete the constants. [1] issue32394 has a small script (winsdk_watchdog.py) to help find such constants, usage: 1, build a CPython build with old SDK. 2, use winsdk_watchdog.py, dump possible affected constants to a file `winsdk_dump.json`. 3, build a CPython build with new SDK. 4, use winsdk_watchdog.py, compare constants between two builds . If a new constant is introduced by new SDK/API, we remove it on older system during runtime. Otherwise we can ignore this new constant, this means it has nothing to do with the new SDK. (msg311858 is a demo.) We don't need to use winsdk_watchdog.py routinely, just use it when updating the building SDK, this process only takes about 10~20 minutes. I think macOS build can also uses this process. [1] The commit: https://github.com/python/cpython/commit/19e7d48ce89422091f9af93038b9fee075d46e9e Note that there was a minor fix later: https://github.com/python/cpython/commit/8905fcc85a6fc3ac394bc89b0bbf40897e9497a#diff-a47fd74731aeb547ad780900bb8e6953 ---------- nosy: +Ma Lin _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue40060> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com