summarylogtreecommitdiffstats
path: root/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch
diff options
context:
space:
mode:
authoratomlong2021-10-23 17:55:22 +0800
committeratomlong2021-10-23 18:06:15 +0800
commit80096c8de4b34ec1ed8f30bb428918cd592b2424 (patch)
treeb48dd1e73de9ea35a4709fb6b93deb16331ec514 /0019-MINGW-defect-winsock2-and-setup-_socket-module.patch
parent89a67c05174951d172252b1db96ff93cc4ec4bcd (diff)
downloadaur-mingw-w64-python.tar.gz
update to 3.9.7
Diffstat (limited to '0019-MINGW-defect-winsock2-and-setup-_socket-module.patch')
-rw-r--r--0019-MINGW-defect-winsock2-and-setup-_socket-module.patch167
1 files changed, 167 insertions, 0 deletions
diff --git a/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch b/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch
new file mode 100644
index 000000000000..ee2addd574b6
--- /dev/null
+++ b/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch
@@ -0,0 +1,167 @@
+From 0a6c242ff914437f5feb80ee638b592667a519b2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?=
+ <alexey.pawlow@gmail.com>
+Date: Thu, 17 Jun 2021 18:51:30 +0530
+Subject: [PATCH 019/N] MINGW defect winsock2 and setup _socket module
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Co-authored-by: Алексей <alexey.pawlow@gmail.com>
+---
+ Misc/config_mingw | 3 +++
+ Modules/socketmodule.c | 8 ++++++--
+ configure.ac | 28 +++++++++++++++++++++++-----
+ pyconfig.h.in | 7 +++++--
+ setup.py | 2 ++
+ 5 files changed, 39 insertions(+), 9 deletions(-)
+
+diff --git a/Misc/config_mingw b/Misc/config_mingw
+index 513065d..9be43fd 100644
+--- a/Misc/config_mingw
++++ b/Misc/config_mingw
+@@ -10,3 +10,6 @@ ac_cv_func_alarm=ignore
+ # files to ignore
+ ac_cv_file__dev_ptmx=ignore #NOTE: under MSYS environment device exist
+ ac_cv_file__dev_ptc=no
++
++# force detection of winsock2 functionality - require wxp or newer
++ac_cv_func_getpeername=yes
+diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
+index 8953185..d15bb4f 100644
+--- a/Modules/socketmodule.c
++++ b/Modules/socketmodule.c
+@@ -305,7 +305,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82&
+ # endif
+
+ /* Macros based on the IPPROTO enum, see: https://bugs.python.org/issue29515 */
+-#ifdef MS_WINDOWS
++#ifdef _MSC_VER
+ #define IPPROTO_ICMP IPPROTO_ICMP
+ #define IPPROTO_IGMP IPPROTO_IGMP
+ #define IPPROTO_GGP IPPROTO_GGP
+@@ -336,7 +336,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82&
+ #define IPPROTO_PGM IPPROTO_PGM // WinSock2 only
+ #define IPPROTO_L2TP IPPROTO_L2TP // WinSock2 only
+ #define IPPROTO_SCTP IPPROTO_SCTP // WinSock2 only
+-#endif /* MS_WINDOWS */
++#endif /* _MSC_VER */
+
+ /* Provides the IsWindows7SP1OrGreater() function */
+ #include <versionhelpers.h>
+@@ -429,6 +429,10 @@ remove_unusable_flags(PyObject *m)
+ /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and
+ * EAI_* constants are defined in (the already included) ws2tcpip.h.
+ */
++#elif defined(__MINGW32__)
++ /* Do not include addrinfo.h as minimum supported version is
++ * _WIN32_WINNT >= WindowsXP(0x0501)
++ */
+ #else
+ # include "addrinfo.h"
+ #endif
+diff --git a/configure.ac b/configure.ac
+index 7fcdd47..5459145 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4443,21 +4443,36 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ ],[])
+ AC_MSG_RESULT($was_it_defined)
+
++AC_CHECK_HEADERS([ws2tcpip.h])
+ AC_MSG_CHECKING(for addrinfo)
+ AC_CACHE_VAL(ac_cv_struct_addrinfo,
+-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
++#ifdef HAVE_WS2TCPIP_H
++# include <ws2tcpip.h>
++#else
++# include <netdb.h>
++#endif]],
++ [[struct addrinfo a]])],
+ [ac_cv_struct_addrinfo=yes],
+ [ac_cv_struct_addrinfo=no]))
+ AC_MSG_RESULT($ac_cv_struct_addrinfo)
+ if test $ac_cv_struct_addrinfo = yes; then
+- AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
++ AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo])
+ fi
+
+ AC_MSG_CHECKING(for sockaddr_storage)
+ AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+-# include <sys/types.h>
+-# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
++#ifdef HAVE_WS2TCPIP_H
++#include <ws2tcpip.h>
++#endif
++#ifdef HAVE_SYS_TYPES_H
++#include <sys/types.h>
++#endif
++#ifdef HAVE_SYS_SOCKET_H
++#include <sys/socket.h>
++#endif]],
++ [[struct sockaddr_storage s]])],
+ [ac_cv_struct_sockaddr_storage=yes],
+ [ac_cv_struct_sockaddr_storage=no]))
+ AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
+@@ -5598,7 +5613,10 @@ fi
+
+ AC_CHECK_TYPE(socklen_t,,
+ AC_DEFINE(socklen_t,int,
+- [Define to `int' if <sys/socket.h> does not define.]),[
++ [Define to `int' if <sys/socket.h> or <ws2tcpip.h> does not define.]),[
++#ifdef HAVE_WS2TCPIP_H
++#include <ws2tcpip.h>
++#endif
+ #ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+diff --git a/pyconfig.h.in b/pyconfig.h.in
+index 5f63cae..b69a7c7 100644
+--- a/pyconfig.h.in
++++ b/pyconfig.h.in
+@@ -54,7 +54,7 @@
+ /* Define to 1 if you have the `acosh' function. */
+ #undef HAVE_ACOSH
+
+-/* struct addrinfo (netdb.h) */
++/* struct addrinfo */
+ #undef HAVE_ADDRINFO
+
+ /* Define to 1 if you have the `alarm' function. */
+@@ -1342,6 +1342,9 @@
+ /* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
+ #undef HAVE_X509_VERIFY_PARAM_SET1_HOST
+
++/* Define to 1 if you have the <ws2tcpip.h> header file. */
++#undef HAVE_WS2TCPIP_H
++
+ /* Define if the zlib library has inflateCopy */
+ #undef HAVE_ZLIB_COPY
+
+@@ -1658,7 +1661,7 @@
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
+
+-/* Define to `int' if <sys/socket.h> does not define. */
++/* Define to `int' if <sys/socket.h> or <ws2tcpip.h> does not define. */
+ #undef socklen_t
+
+ /* Define to `int' if <sys/types.h> doesn't define. */
+diff --git a/setup.py b/setup.py
+index 60f6243..c8242ac 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1143,6 +1143,8 @@ class PyBuildExt(build_ext):
+ if MACOS:
+ # Issue #35569: Expose RFC 3542 socket options.
+ kwargs['extra_compile_args'] = ['-D__APPLE_USE_RFC_3542']
++ if MS_WINDOWS:
++ kwargs['libraries'] = ['ws2_32', 'iphlpapi']
+
+ self.add(Extension('_socket', ['socketmodule.c'], **kwargs))
+ elif self.compiler.find_library_file(self.lib_dirs, 'net'):
+--
+2.33.0
+