diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index 9b2219de7..27bc1dd49 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -2,6 +2,8 @@ python: - 3.10 python_impl: - cpython +openssl: + - 3.0 # [win] libffi: # [win] - 3.4 # [win] numpy: diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 0f3ca1368..da99314ee 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -4,7 +4,7 @@ {% set ver2 = '.'.join(version.split('.')[0:2]) %} {% set ver2nd = ''.join(version.split('.')[0:2]) %} {% set ver3nd = ''.join(version.split('.')[0:3]) %} -{% set build_number = "1" %} +{% set build_number = "2" %} {% set channel_targets = ('abc', 'def') %} # this makes the linter happy @@ -84,9 +84,11 @@ source: - patches/0023-unvendor-xz.patch - patches/0024-unvendor-zlib.patch - patches/0025-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch - {% if (openssl | string).startswith('3.0') %} - - patches/0026-Use-OpenSSL-3-instead-of-1_1.patch - {% endif %} + - patches/0026-Use-OpenSSL-3-instead-of-1_1.patch # [win] + # https://github.com/python/cpython/pull/100373 (OpenSSL 3.5.7 Windows cert-store fix) + - patches/0027-Fix-ssl-DER-EOF-detection-for-openssl-3.5.7.patch + # https://github.com/python/cpython/pull/29791 (external libffi on Windows) + - patches/0028-Fix-ctypes-fielddesc-init-for-external-libffi.patch build: number: {{ build_number }} @@ -115,6 +117,9 @@ outputs: ignore_run_exports_from: # [unix] # C++ only installed so CXX is defined for distutils/sysconfig. - {{ compiler('cxx') }} # [unix] + # These two are just to get the headers needed for tk.h, but is unused + - xorg-libx11 # [linux] + - xorg-xorgproto # [linux] # Disabled until verified to work correctly detect_binary_files_with_prefix: true # detect_binary_files_with_prefix: False @@ -174,8 +179,6 @@ outputs: - {{ compiler('c') }} - {{ compiler('cxx') }} - sed # [unix] - - {{ cdt('xorg-x11-proto-devel') }} # [linux] - - {{ cdt('libx11-devel') }} # [linux] - make # [not win] - libtool # [unix] - pkg-config # [not win] @@ -192,9 +195,13 @@ outputs: - sqlite - xz - zlib - - openssl + - openssl >=3.0,<3.1 # [win] + - openssl # [not win] - readline # [not win] - tk + # These two are just to get the headers needed for tk.h, but is unused + - xorg-libx11 # [linux] + - xorg-xorgproto # [linux] - ncurses # [unix] - libffi 3.4 - ld_impl_{{ target_platform }} >=2.35.1 # [linux] diff --git a/recipe/patches/0015-Doing-d1trimfile.patch b/recipe/patches/0015-Doing-d1trimfile.patch index 63da3e253..62f9ff906 100644 --- a/recipe/patches/0015-Doing-d1trimfile.patch +++ b/recipe/patches/0015-Doing-d1trimfile.patch @@ -1,58 +1,58 @@ -From 7df56c01f83fa3524b7c2045388458fc32146c4b Mon Sep 17 00:00:00 2001 -From: Ray Donnelly -Date: Tue, 31 Dec 2019 21:47:47 +0100 -Subject: [PATCH 15/25] Doing d1trimfile - ---- - PCbuild/_asyncio.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_bz2.vcxproj | 4 ++++ - PCbuild/_ctypes.vcxproj | 4 ++++ - PCbuild/_ctypes_test.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_decimal.vcxproj | 4 ++++ - PCbuild/_elementtree.vcxproj | 4 ++++ - PCbuild/_freeze_importlib.vcxproj | 4 ++++ - PCbuild/_hashlib.vcxproj | 12 ++++++++++++ - PCbuild/_lzma.vcxproj | 4 ++++ - PCbuild/_msi.vcxproj | 12 ++++++++++++ - PCbuild/_multiprocessing.vcxproj | 12 ++++++++++++ - PCbuild/_overlapped.vcxproj | 12 ++++++++++++ - PCbuild/_queue.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_socket.vcxproj | 12 ++++++++++++ - PCbuild/_sqlite3.vcxproj | 4 ++++ - PCbuild/_ssl.vcxproj | 12 ++++++++++++ - PCbuild/_testbuffer.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_testcapi.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_testconsole.vcxproj | 4 ++++ - PCbuild/_testembed.vcxproj | 4 ++++ - PCbuild/_testimportmultiple.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_testinternalcapi.vcxproj | 20 ++++++++++++++++++++ - PCbuild/_testmultiphase.vcxproj | 4 ++++ - PCbuild/_tkinter.vcxproj | 4 ++++ - PCbuild/liblzma.vcxproj | 4 ++++ - PCbuild/pyexpat.vcxproj | 4 ++++ - PCbuild/pylauncher.vcxproj | 4 ++++ - PCbuild/pyshellext.vcxproj | 4 ++++ - PCbuild/python.vcxproj | 4 ++++ - PCbuild/python3dll.vcxproj | 4 ++++ - PCbuild/python_uwp.vcxproj | 2 +- - PCbuild/pythoncore.vcxproj | 2 +- - PCbuild/pythonw.vcxproj | 12 ++++++++++++ - PCbuild/pythonw_uwp.vcxproj | 2 +- - PCbuild/pywlauncher.vcxproj | 4 ++++ - PCbuild/select.vcxproj | 12 ++++++++++++ - PCbuild/unicodedata.vcxproj | 20 ++++++++++++++++++++ - PCbuild/venvlauncher.vcxproj | 4 ++++ - PCbuild/venvwlauncher.vcxproj | 4 ++++ - PCbuild/winsound.vcxproj | 12 ++++++++++++ - PCbuild/xxlimited.vcxproj | 6 ++++++ - PCbuild/xxlimited_35.vcxproj | 6 ++++++ - 42 files changed, 363 insertions(+), 3 deletions(-) - -diff --git a/PCbuild/_asyncio.vcxproj b/PCbuild/_asyncio.vcxproj -index ed1e1bc0a4..47d322be5f 100644 ---- a/PCbuild/_asyncio.vcxproj -+++ b/PCbuild/_asyncio.vcxproj -@@ -91,6 +91,26 @@ +From 7df56c01f83fa3524b7c2045388458fc32146c4b Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Tue, 31 Dec 2019 21:47:47 +0100 +Subject: [PATCH 15/25] Doing d1trimfile + +--- + PCbuild/_asyncio.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_bz2.vcxproj | 4 ++++ + PCbuild/_ctypes.vcxproj | 4 ++++ + PCbuild/_ctypes_test.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_decimal.vcxproj | 4 ++++ + PCbuild/_elementtree.vcxproj | 4 ++++ + PCbuild/_freeze_importlib.vcxproj | 4 ++++ + PCbuild/_hashlib.vcxproj | 12 ++++++++++++ + PCbuild/_lzma.vcxproj | 4 ++++ + PCbuild/_msi.vcxproj | 12 ++++++++++++ + PCbuild/_multiprocessing.vcxproj | 12 ++++++++++++ + PCbuild/_overlapped.vcxproj | 12 ++++++++++++ + PCbuild/_queue.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_socket.vcxproj | 12 ++++++++++++ + PCbuild/_sqlite3.vcxproj | 4 ++++ + PCbuild/_ssl.vcxproj | 12 ++++++++++++ + PCbuild/_testbuffer.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_testcapi.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_testconsole.vcxproj | 4 ++++ + PCbuild/_testembed.vcxproj | 4 ++++ + PCbuild/_testimportmultiple.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_testinternalcapi.vcxproj | 20 ++++++++++++++++++++ + PCbuild/_testmultiphase.vcxproj | 4 ++++ + PCbuild/_tkinter.vcxproj | 4 ++++ + PCbuild/liblzma.vcxproj | 4 ++++ + PCbuild/pyexpat.vcxproj | 4 ++++ + PCbuild/pylauncher.vcxproj | 4 ++++ + PCbuild/pyshellext.vcxproj | 4 ++++ + PCbuild/python.vcxproj | 4 ++++ + PCbuild/python3dll.vcxproj | 4 ++++ + PCbuild/python_uwp.vcxproj | 2 +- + PCbuild/pythoncore.vcxproj | 2 +- + PCbuild/pythonw.vcxproj | 12 ++++++++++++ + PCbuild/pythonw_uwp.vcxproj | 2 +- + PCbuild/pywlauncher.vcxproj | 4 ++++ + PCbuild/select.vcxproj | 12 ++++++++++++ + PCbuild/unicodedata.vcxproj | 20 ++++++++++++++++++++ + PCbuild/venvlauncher.vcxproj | 4 ++++ + PCbuild/venvwlauncher.vcxproj | 4 ++++ + PCbuild/winsound.vcxproj | 12 ++++++++++++ + PCbuild/xxlimited.vcxproj | 6 ++++++ + PCbuild/xxlimited_35.vcxproj | 6 ++++++ + 42 files changed, 363 insertions(+), 3 deletions(-) + +diff --git a/PCbuild/_asyncio.vcxproj b/PCbuild/_asyncio.vcxproj +index ed1e1bc0a4..47d322be5f 100644 +--- a/PCbuild/_asyncio.vcxproj ++++ b/PCbuild/_asyncio.vcxproj +@@ -91,6 +91,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -79,11 +79,11 @@ index ed1e1bc0a4..47d322be5f 100644 -diff --git a/PCbuild/_bz2.vcxproj b/PCbuild/_bz2.vcxproj -index 3fe95fbf83..0402f7a9aa 100644 ---- a/PCbuild/_bz2.vcxproj -+++ b/PCbuild/_bz2.vcxproj -@@ -97,6 +97,10 @@ +diff --git a/PCbuild/_bz2.vcxproj b/PCbuild/_bz2.vcxproj +index 3fe95fbf83..0402f7a9aa 100644 +--- a/PCbuild/_bz2.vcxproj ++++ b/PCbuild/_bz2.vcxproj +@@ -97,6 +97,10 @@ $(bz2Dir);%(AdditionalIncludeDirectories) WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) 4244;4267;%(DisableSpecificWarnings) @@ -94,14 +94,15 @@ index 3fe95fbf83..0402f7a9aa 100644 -diff --git a/PCbuild/_ctypes.vcxproj b/PCbuild/_ctypes.vcxproj -index 69e4271a9b..f28002d190 100644 ---- a/PCbuild/_ctypes.vcxproj -+++ b/PCbuild/_ctypes.vcxproj -@@ -95,6 +95,10 @@ +diff --git a/PCbuild/_ctypes.vcxproj b/PCbuild/_ctypes.vcxproj +index 69e4271a9b..f28002d190 100644 +--- a/PCbuild/_ctypes.vcxproj ++++ b/PCbuild/_ctypes.vcxproj +@@ -95,6 +95,10 @@ - FFI_BUILDING;%(PreprocessorDefinitions) +- FFI_BUILDING;%(PreprocessorDefinitions) ++ USING_MALLOC_CLOSURE_DOT_C=1;%(PreprocessorDefinitions) + /d1trimfile:%SRC_DIR% + /d1trimfile:%SRC_DIR% + /d1trimfile:%SRC_DIR% @@ -109,11 +110,11 @@ index 69e4271a9b..f28002d190 100644 /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE %(AdditionalOptions) -diff --git a/PCbuild/_ctypes_test.vcxproj b/PCbuild/_ctypes_test.vcxproj -index 8a01e743a4..1ad658d5f9 100644 ---- a/PCbuild/_ctypes_test.vcxproj -+++ b/PCbuild/_ctypes_test.vcxproj -@@ -92,6 +92,26 @@ +diff --git a/PCbuild/_ctypes_test.vcxproj b/PCbuild/_ctypes_test.vcxproj +index 8a01e743a4..1ad658d5f9 100644 +--- a/PCbuild/_ctypes_test.vcxproj ++++ b/PCbuild/_ctypes_test.vcxproj +@@ -92,6 +92,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -140,11 +141,11 @@ index 8a01e743a4..1ad658d5f9 100644 -diff --git a/PCbuild/_decimal.vcxproj b/PCbuild/_decimal.vcxproj -index 0916f1a2d3..17a4cbfcd7 100644 ---- a/PCbuild/_decimal.vcxproj -+++ b/PCbuild/_decimal.vcxproj -@@ -99,6 +99,10 @@ +diff --git a/PCbuild/_decimal.vcxproj b/PCbuild/_decimal.vcxproj +index 0916f1a2d3..17a4cbfcd7 100644 +--- a/PCbuild/_decimal.vcxproj ++++ b/PCbuild/_decimal.vcxproj +@@ -99,6 +99,10 @@ CONFIG_64;ANSI;%(PreprocessorDefinitions) CONFIG_64;MASM;%(PreprocessorDefinitions) ..\Modules\_decimal;..\Modules\_decimal\libmpdec;%(AdditionalIncludeDirectories) @@ -155,11 +156,11 @@ index 0916f1a2d3..17a4cbfcd7 100644 -diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj -index 4a125b243b..20cc09d63f 100644 ---- a/PCbuild/_elementtree.vcxproj -+++ b/PCbuild/_elementtree.vcxproj -@@ -95,6 +95,10 @@ +diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj +index 4a125b243b..20cc09d63f 100644 +--- a/PCbuild/_elementtree.vcxproj ++++ b/PCbuild/_elementtree.vcxproj +@@ -95,6 +95,10 @@ ..\Modules\expat;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;USE_PYEXPAT_CAPI;XML_STATIC;%(PreprocessorDefinitions) @@ -170,11 +171,11 @@ index 4a125b243b..20cc09d63f 100644 -diff --git a/PCbuild/_freeze_importlib.vcxproj b/PCbuild/_freeze_importlib.vcxproj -index e437412a16..c4d5886b9f 100644 ---- a/PCbuild/_freeze_importlib.vcxproj -+++ b/PCbuild/_freeze_importlib.vcxproj -@@ -89,6 +89,10 @@ +diff --git a/PCbuild/_freeze_importlib.vcxproj b/PCbuild/_freeze_importlib.vcxproj +index e437412a16..c4d5886b9f 100644 +--- a/PCbuild/_freeze_importlib.vcxproj ++++ b/PCbuild/_freeze_importlib.vcxproj +@@ -89,6 +89,10 @@ _CONSOLE;%(PreprocessorDefinitions) @@ -185,11 +186,11 @@ index e437412a16..c4d5886b9f 100644 Console -diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj -index 6dad8183c5..6d3d37fdf9 100644 ---- a/PCbuild/_hashlib.vcxproj -+++ b/PCbuild/_hashlib.vcxproj -@@ -96,6 +96,18 @@ +diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj +index 6dad8183c5..6d3d37fdf9 100644 +--- a/PCbuild/_hashlib.vcxproj ++++ b/PCbuild/_hashlib.vcxproj +@@ -96,6 +96,18 @@ ws2_32.lib;%(AdditionalDependencies) @@ -208,11 +209,11 @@ index 6dad8183c5..6d3d37fdf9 100644 -diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj -index fe076a6fc5..0565132363 100644 ---- a/PCbuild/_lzma.vcxproj -+++ b/PCbuild/_lzma.vcxproj -@@ -95,6 +95,10 @@ +diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj +index fe076a6fc5..0565132363 100644 +--- a/PCbuild/_lzma.vcxproj ++++ b/PCbuild/_lzma.vcxproj +@@ -95,6 +95,10 @@ $(lzmaDir)src/liblzma/api;%(AdditionalIncludeDirectories) WIN32;_FILE_OFFSET_BITS=64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;LZMA_API_STATIC;%(PreprocessorDefinitions) @@ -223,11 +224,11 @@ index fe076a6fc5..0565132363 100644 $(OutDir)liblzma$(PyDebugExt).lib;%(AdditionalDependencies) -diff --git a/PCbuild/_msi.vcxproj b/PCbuild/_msi.vcxproj -index 720eb2931b..247ab0e915 100644 ---- a/PCbuild/_msi.vcxproj -+++ b/PCbuild/_msi.vcxproj -@@ -96,6 +96,18 @@ +diff --git a/PCbuild/_msi.vcxproj b/PCbuild/_msi.vcxproj +index 720eb2931b..247ab0e915 100644 +--- a/PCbuild/_msi.vcxproj ++++ b/PCbuild/_msi.vcxproj +@@ -96,6 +96,18 @@ cabinet.lib;msi.lib;rpcrt4.lib;%(AdditionalDependencies) @@ -246,11 +247,11 @@ index 720eb2931b..247ab0e915 100644 -diff --git a/PCbuild/_multiprocessing.vcxproj b/PCbuild/_multiprocessing.vcxproj -index 77b6bfc8e1..3c2b651549 100644 ---- a/PCbuild/_multiprocessing.vcxproj -+++ b/PCbuild/_multiprocessing.vcxproj -@@ -95,6 +95,18 @@ +diff --git a/PCbuild/_multiprocessing.vcxproj b/PCbuild/_multiprocessing.vcxproj +index 77b6bfc8e1..3c2b651549 100644 +--- a/PCbuild/_multiprocessing.vcxproj ++++ b/PCbuild/_multiprocessing.vcxproj +@@ -95,6 +95,18 @@ ws2_32.lib;%(AdditionalDependencies) @@ -269,11 +270,11 @@ index 77b6bfc8e1..3c2b651549 100644 -diff --git a/PCbuild/_overlapped.vcxproj b/PCbuild/_overlapped.vcxproj -index 9e60d3b5db..95b57290f8 100644 ---- a/PCbuild/_overlapped.vcxproj -+++ b/PCbuild/_overlapped.vcxproj -@@ -95,6 +95,18 @@ +diff --git a/PCbuild/_overlapped.vcxproj b/PCbuild/_overlapped.vcxproj +index 9e60d3b5db..95b57290f8 100644 +--- a/PCbuild/_overlapped.vcxproj ++++ b/PCbuild/_overlapped.vcxproj +@@ -95,6 +95,18 @@ ws2_32.lib;%(AdditionalDependencies) @@ -292,11 +293,11 @@ index 9e60d3b5db..95b57290f8 100644 -diff --git a/PCbuild/_queue.vcxproj b/PCbuild/_queue.vcxproj -index 8065b23585..e46ab5a83b 100644 ---- a/PCbuild/_queue.vcxproj -+++ b/PCbuild/_queue.vcxproj -@@ -91,6 +91,26 @@ +diff --git a/PCbuild/_queue.vcxproj b/PCbuild/_queue.vcxproj +index 8065b23585..e46ab5a83b 100644 +--- a/PCbuild/_queue.vcxproj ++++ b/PCbuild/_queue.vcxproj +@@ -91,6 +91,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -323,11 +324,11 @@ index 8065b23585..e46ab5a83b 100644 -diff --git a/PCbuild/_socket.vcxproj b/PCbuild/_socket.vcxproj -index 8fd75f90e7..b403828291 100644 ---- a/PCbuild/_socket.vcxproj -+++ b/PCbuild/_socket.vcxproj -@@ -95,6 +95,18 @@ +diff --git a/PCbuild/_socket.vcxproj b/PCbuild/_socket.vcxproj +index 8fd75f90e7..b403828291 100644 +--- a/PCbuild/_socket.vcxproj ++++ b/PCbuild/_socket.vcxproj +@@ -95,6 +95,18 @@ ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) @@ -346,11 +347,11 @@ index 8fd75f90e7..b403828291 100644 -diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj -index fcdee1be60..ec2680955f 100644 ---- a/PCbuild/_sqlite3.vcxproj -+++ b/PCbuild/_sqlite3.vcxproj -@@ -94,6 +94,10 @@ +diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj +index fcdee1be60..ec2680955f 100644 +--- a/PCbuild/_sqlite3.vcxproj ++++ b/PCbuild/_sqlite3.vcxproj +@@ -94,6 +94,10 @@ $(condaDir)\include;%(AdditionalIncludeDirectories) @@ -361,11 +362,11 @@ index fcdee1be60..ec2680955f 100644 $(condaDir)\lib\sqlite3.lib;%(AdditionalDependencies) -diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj -index b2c23d5e8c..ebe4e88848 100644 ---- a/PCbuild/_ssl.vcxproj -+++ b/PCbuild/_ssl.vcxproj -@@ -96,6 +96,18 @@ +diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj +index b2c23d5e8c..ebe4e88848 100644 +--- a/PCbuild/_ssl.vcxproj ++++ b/PCbuild/_ssl.vcxproj +@@ -96,6 +96,18 @@ ws2_32.lib;crypt32.lib;%(AdditionalDependencies) @@ -384,11 +385,11 @@ index b2c23d5e8c..ebe4e88848 100644 -diff --git a/PCbuild/_testbuffer.vcxproj b/PCbuild/_testbuffer.vcxproj -index 917d7ae50f..8c7e141eea 100644 ---- a/PCbuild/_testbuffer.vcxproj -+++ b/PCbuild/_testbuffer.vcxproj -@@ -92,6 +92,26 @@ +diff --git a/PCbuild/_testbuffer.vcxproj b/PCbuild/_testbuffer.vcxproj +index 917d7ae50f..8c7e141eea 100644 +--- a/PCbuild/_testbuffer.vcxproj ++++ b/PCbuild/_testbuffer.vcxproj +@@ -92,6 +92,26 @@ <_ProjectFileVersion>10.0.40219.1 @@ -415,11 +416,11 @@ index 917d7ae50f..8c7e141eea 100644 -diff --git a/PCbuild/_testcapi.vcxproj b/PCbuild/_testcapi.vcxproj -index c1a1943725..99ee2f4a41 100644 ---- a/PCbuild/_testcapi.vcxproj -+++ b/PCbuild/_testcapi.vcxproj -@@ -92,6 +92,26 @@ +diff --git a/PCbuild/_testcapi.vcxproj b/PCbuild/_testcapi.vcxproj +index c1a1943725..99ee2f4a41 100644 +--- a/PCbuild/_testcapi.vcxproj ++++ b/PCbuild/_testcapi.vcxproj +@@ -92,6 +92,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -446,11 +447,11 @@ index c1a1943725..99ee2f4a41 100644 -diff --git a/PCbuild/_testconsole.vcxproj b/PCbuild/_testconsole.vcxproj -index 5d7e14eff1..695dcb3b91 100644 ---- a/PCbuild/_testconsole.vcxproj -+++ b/PCbuild/_testconsole.vcxproj -@@ -92,6 +92,10 @@ +diff --git a/PCbuild/_testconsole.vcxproj b/PCbuild/_testconsole.vcxproj +index 5d7e14eff1..695dcb3b91 100644 +--- a/PCbuild/_testconsole.vcxproj ++++ b/PCbuild/_testconsole.vcxproj +@@ -92,6 +92,10 @@ _CONSOLE;%(PreprocessorDefinitions) @@ -461,11 +462,11 @@ index 5d7e14eff1..695dcb3b91 100644 Console -diff --git a/PCbuild/_testembed.vcxproj b/PCbuild/_testembed.vcxproj -index a7ea8787e0..eab72171e3 100644 ---- a/PCbuild/_testembed.vcxproj -+++ b/PCbuild/_testembed.vcxproj -@@ -89,6 +89,10 @@ +diff --git a/PCbuild/_testembed.vcxproj b/PCbuild/_testembed.vcxproj +index a7ea8787e0..eab72171e3 100644 +--- a/PCbuild/_testembed.vcxproj ++++ b/PCbuild/_testembed.vcxproj +@@ -89,6 +89,10 @@ _CONSOLE;%(PreprocessorDefinitions) @@ -476,11 +477,11 @@ index a7ea8787e0..eab72171e3 100644 Console -diff --git a/PCbuild/_testimportmultiple.vcxproj b/PCbuild/_testimportmultiple.vcxproj -index 6d80d5779f..951bf40e7c 100644 ---- a/PCbuild/_testimportmultiple.vcxproj -+++ b/PCbuild/_testimportmultiple.vcxproj -@@ -92,6 +92,26 @@ +diff --git a/PCbuild/_testimportmultiple.vcxproj b/PCbuild/_testimportmultiple.vcxproj +index 6d80d5779f..951bf40e7c 100644 +--- a/PCbuild/_testimportmultiple.vcxproj ++++ b/PCbuild/_testimportmultiple.vcxproj +@@ -92,6 +92,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -507,11 +508,11 @@ index 6d80d5779f..951bf40e7c 100644 -diff --git a/PCbuild/_testinternalcapi.vcxproj b/PCbuild/_testinternalcapi.vcxproj -index 6c5b12cd40..d25c774913 100644 ---- a/PCbuild/_testinternalcapi.vcxproj -+++ b/PCbuild/_testinternalcapi.vcxproj -@@ -92,6 +92,26 @@ +diff --git a/PCbuild/_testinternalcapi.vcxproj b/PCbuild/_testinternalcapi.vcxproj +index 6c5b12cd40..d25c774913 100644 +--- a/PCbuild/_testinternalcapi.vcxproj ++++ b/PCbuild/_testinternalcapi.vcxproj +@@ -92,6 +92,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -538,11 +539,11 @@ index 6c5b12cd40..d25c774913 100644 -diff --git a/PCbuild/_testmultiphase.vcxproj b/PCbuild/_testmultiphase.vcxproj -index 430eb528cc..7a268d227b 100644 ---- a/PCbuild/_testmultiphase.vcxproj -+++ b/PCbuild/_testmultiphase.vcxproj -@@ -92,6 +92,10 @@ +diff --git a/PCbuild/_testmultiphase.vcxproj b/PCbuild/_testmultiphase.vcxproj +index 430eb528cc..7a268d227b 100644 +--- a/PCbuild/_testmultiphase.vcxproj ++++ b/PCbuild/_testmultiphase.vcxproj +@@ -92,6 +92,10 @@ _CONSOLE;%(PreprocessorDefinitions) @@ -553,11 +554,11 @@ index 430eb528cc..7a268d227b 100644 Console -diff --git a/PCbuild/_tkinter.vcxproj b/PCbuild/_tkinter.vcxproj -index af813b77c1..9ff2acde0a 100644 ---- a/PCbuild/_tkinter.vcxproj -+++ b/PCbuild/_tkinter.vcxproj -@@ -96,6 +96,10 @@ +diff --git a/PCbuild/_tkinter.vcxproj b/PCbuild/_tkinter.vcxproj +index af813b77c1..9ff2acde0a 100644 +--- a/PCbuild/_tkinter.vcxproj ++++ b/PCbuild/_tkinter.vcxproj +@@ -96,6 +96,10 @@ $(tcltkDir)include;%(AdditionalIncludeDirectories) WITH_APPINIT;%(PreprocessorDefinitions) Py_TCLTK_DIR="$(tcltkDir.TrimEnd('\').Replace('\', '\\'))";%(PreprocessorDefinitions) @@ -568,11 +569,11 @@ index af813b77c1..9ff2acde0a 100644 $(tcltkLib);%(AdditionalDependencies) -diff --git a/PCbuild/liblzma.vcxproj b/PCbuild/liblzma.vcxproj -index 4dd42ab98a..7c2dbc7e70 100644 ---- a/PCbuild/liblzma.vcxproj -+++ b/PCbuild/liblzma.vcxproj -@@ -94,6 +94,10 @@ +diff --git a/PCbuild/liblzma.vcxproj b/PCbuild/liblzma.vcxproj +index 4dd42ab98a..7c2dbc7e70 100644 +--- a/PCbuild/liblzma.vcxproj ++++ b/PCbuild/liblzma.vcxproj +@@ -94,6 +94,10 @@ WIN32;HAVE_CONFIG_H;_LIB;%(PreprocessorDefinitions) $(lzmaDir)windows/vs2019;$(lzmaDir)src/liblzma/common;$(lzmaDir)src/common;$(lzmaDir)src/liblzma/api;$(lzmaDir)src/liblzma/check;$(lzmaDir)src/liblzma/delta;$(lzmaDir)src/liblzma/lz;$(lzmaDir)src/liblzma/lzma;$(lzmaDir)src/liblzma/rangecoder;$(lzmaDir)src/liblzma/simple;%(AdditionalIncludeDirectories) 4028;4113;4133;4244;4267;4996;%(DisableSpecificWarnings) @@ -583,11 +584,11 @@ index 4dd42ab98a..7c2dbc7e70 100644 -diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj -index b2d9f5d57d..26ac82980c 100644 ---- a/PCbuild/pyexpat.vcxproj -+++ b/PCbuild/pyexpat.vcxproj -@@ -92,6 +92,10 @@ +diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj +index b2d9f5d57d..26ac82980c 100644 +--- a/PCbuild/pyexpat.vcxproj ++++ b/PCbuild/pyexpat.vcxproj +@@ -92,6 +92,10 @@ $(PySourcePath)Modules\expat;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;PYEXPAT_EXPORTS;HAVE_EXPAT_H;XML_STATIC;%(PreprocessorDefinitions) @@ -598,11 +599,11 @@ index b2d9f5d57d..26ac82980c 100644 -diff --git a/PCbuild/pylauncher.vcxproj b/PCbuild/pylauncher.vcxproj -index 550e084230..0ea871bddb 100644 ---- a/PCbuild/pylauncher.vcxproj -+++ b/PCbuild/pylauncher.vcxproj -@@ -93,6 +93,10 @@ +diff --git a/PCbuild/pylauncher.vcxproj b/PCbuild/pylauncher.vcxproj +index 550e084230..0ea871bddb 100644 +--- a/PCbuild/pylauncher.vcxproj ++++ b/PCbuild/pylauncher.vcxproj +@@ -93,6 +93,10 @@ _CONSOLE;%(PreprocessorDefinitions) MultiThreaded @@ -613,11 +614,11 @@ index 550e084230..0ea871bddb 100644 version.lib;%(AdditionalDependencies) -diff --git a/PCbuild/pyshellext.vcxproj b/PCbuild/pyshellext.vcxproj -index ea432d6bc9..13bc692103 100644 ---- a/PCbuild/pyshellext.vcxproj -+++ b/PCbuild/pyshellext.vcxproj -@@ -92,6 +92,10 @@ +diff --git a/PCbuild/pyshellext.vcxproj b/PCbuild/pyshellext.vcxproj +index ea432d6bc9..13bc692103 100644 +--- a/PCbuild/pyshellext.vcxproj ++++ b/PCbuild/pyshellext.vcxproj +@@ -92,6 +92,10 @@ _CONSOLE;%(PreprocessorDefinitions) @@ -628,11 +629,11 @@ index ea432d6bc9..13bc692103 100644 version.lib;shlwapi.lib;%(AdditionalDependencies) -diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj -index 3481ed3d47..06b0858e22 100644 ---- a/PCbuild/python.vcxproj -+++ b/PCbuild/python.vcxproj -@@ -91,6 +91,10 @@ +diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj +index 3481ed3d47..06b0858e22 100644 +--- a/PCbuild/python.vcxproj ++++ b/PCbuild/python.vcxproj +@@ -91,6 +91,10 @@ Py_BUILD_CORE;_CONSOLE;%(PreprocessorDefinitions) @@ -643,11 +644,11 @@ index 3481ed3d47..06b0858e22 100644 Console -diff --git a/PCbuild/python3dll.vcxproj b/PCbuild/python3dll.vcxproj -index ec22e6fc76..80dff0a3d9 100644 ---- a/PCbuild/python3dll.vcxproj -+++ b/PCbuild/python3dll.vcxproj -@@ -93,6 +93,10 @@ +diff --git a/PCbuild/python3dll.vcxproj b/PCbuild/python3dll.vcxproj +index ec22e6fc76..80dff0a3d9 100644 +--- a/PCbuild/python3dll.vcxproj ++++ b/PCbuild/python3dll.vcxproj +@@ -93,6 +93,10 @@ PYTHON_DLL_NAME="$(PyDllName)";%(PreprocessorDefinitions) false @@ -658,11 +659,11 @@ index ec22e6fc76..80dff0a3d9 100644 true -diff --git a/PCbuild/python_uwp.vcxproj b/PCbuild/python_uwp.vcxproj -index fb27e9e712..f8dc841ef1 100644 ---- a/PCbuild/python_uwp.vcxproj -+++ b/PCbuild/python_uwp.vcxproj -@@ -90,7 +90,7 @@ +diff --git a/PCbuild/python_uwp.vcxproj b/PCbuild/python_uwp.vcxproj +index fb27e9e712..f8dc841ef1 100644 +--- a/PCbuild/python_uwp.vcxproj ++++ b/PCbuild/python_uwp.vcxproj +@@ -90,7 +90,7 @@ %(PreprocessorDefinitions) @@ -671,11 +672,11 @@ index fb27e9e712..f8dc841ef1 100644 windowsapp.lib;%(AdditionalDependencies) -diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj -index 3ba6358764..5d15834900 100644 ---- a/PCbuild/pythoncore.vcxproj -+++ b/PCbuild/pythoncore.vcxproj -@@ -99,7 +99,7 @@ +diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj +index 3ba6358764..5d15834900 100644 +--- a/PCbuild/pythoncore.vcxproj ++++ b/PCbuild/pythoncore.vcxproj +@@ -99,7 +99,7 @@ @@ -684,11 +685,11 @@ index 3ba6358764..5d15834900 100644 $(PySourcePath)Python;%(AdditionalIncludeDirectories) $(zlibDir);%(AdditionalIncludeDirectories) _USRDLL;Py_BUILD_CORE;Py_BUILD_CORE_BUILTIN;Py_ENABLE_SHARED;MS_DLL_ID="$(SysWinVer)";%(PreprocessorDefinitions) -diff --git a/PCbuild/pythonw.vcxproj b/PCbuild/pythonw.vcxproj -index 247ea10d5c..5bd4bbbc3a 100644 ---- a/PCbuild/pythonw.vcxproj -+++ b/PCbuild/pythonw.vcxproj -@@ -91,6 +91,18 @@ +diff --git a/PCbuild/pythonw.vcxproj b/PCbuild/pythonw.vcxproj +index 247ea10d5c..5bd4bbbc3a 100644 +--- a/PCbuild/pythonw.vcxproj ++++ b/PCbuild/pythonw.vcxproj +@@ -91,6 +91,18 @@ 2000000 @@ -707,11 +708,11 @@ index 247ea10d5c..5bd4bbbc3a 100644 -diff --git a/PCbuild/pythonw_uwp.vcxproj b/PCbuild/pythonw_uwp.vcxproj -index e21e46a1b7..ff7dc6635d 100644 ---- a/PCbuild/pythonw_uwp.vcxproj -+++ b/PCbuild/pythonw_uwp.vcxproj -@@ -90,7 +90,7 @@ +diff --git a/PCbuild/pythonw_uwp.vcxproj b/PCbuild/pythonw_uwp.vcxproj +index e21e46a1b7..ff7dc6635d 100644 +--- a/PCbuild/pythonw_uwp.vcxproj ++++ b/PCbuild/pythonw_uwp.vcxproj +@@ -90,7 +90,7 @@ PYTHONW;%(PreprocessorDefinitions) @@ -720,11 +721,11 @@ index e21e46a1b7..ff7dc6635d 100644 windowsapp.lib;%(AdditionalDependencies) -diff --git a/PCbuild/pywlauncher.vcxproj b/PCbuild/pywlauncher.vcxproj -index 44e3fc2927..1105c99807 100644 ---- a/PCbuild/pywlauncher.vcxproj -+++ b/PCbuild/pywlauncher.vcxproj -@@ -93,6 +93,10 @@ +diff --git a/PCbuild/pywlauncher.vcxproj b/PCbuild/pywlauncher.vcxproj +index 44e3fc2927..1105c99807 100644 +--- a/PCbuild/pywlauncher.vcxproj ++++ b/PCbuild/pywlauncher.vcxproj +@@ -93,6 +93,10 @@ _WINDOWS;%(PreprocessorDefinitions) MultiThreaded @@ -735,11 +736,11 @@ index 44e3fc2927..1105c99807 100644 version.lib;%(AdditionalDependencies) -diff --git a/PCbuild/select.vcxproj b/PCbuild/select.vcxproj -index 750a713949..1da66eaddc 100644 ---- a/PCbuild/select.vcxproj -+++ b/PCbuild/select.vcxproj -@@ -94,6 +94,18 @@ +diff --git a/PCbuild/select.vcxproj b/PCbuild/select.vcxproj +index 750a713949..1da66eaddc 100644 +--- a/PCbuild/select.vcxproj ++++ b/PCbuild/select.vcxproj +@@ -94,6 +94,18 @@ ws2_32.lib;%(AdditionalDependencies) @@ -758,11 +759,11 @@ index 750a713949..1da66eaddc 100644 -diff --git a/PCbuild/unicodedata.vcxproj b/PCbuild/unicodedata.vcxproj -index addef75335..1a13f363e2 100644 ---- a/PCbuild/unicodedata.vcxproj -+++ b/PCbuild/unicodedata.vcxproj -@@ -91,6 +91,26 @@ +diff --git a/PCbuild/unicodedata.vcxproj b/PCbuild/unicodedata.vcxproj +index addef75335..1a13f363e2 100644 +--- a/PCbuild/unicodedata.vcxproj ++++ b/PCbuild/unicodedata.vcxproj +@@ -91,6 +91,26 @@ <_ProjectFileVersion>10.0.30319.1 @@ -789,11 +790,11 @@ index addef75335..1a13f363e2 100644 -diff --git a/PCbuild/venvlauncher.vcxproj b/PCbuild/venvlauncher.vcxproj -index 123e84ec4e..6272f9f69d 100644 ---- a/PCbuild/venvlauncher.vcxproj -+++ b/PCbuild/venvlauncher.vcxproj -@@ -93,6 +93,10 @@ +diff --git a/PCbuild/venvlauncher.vcxproj b/PCbuild/venvlauncher.vcxproj +index 123e84ec4e..6272f9f69d 100644 +--- a/PCbuild/venvlauncher.vcxproj ++++ b/PCbuild/venvlauncher.vcxproj +@@ -93,6 +93,10 @@ _CONSOLE;VENV_REDIRECT;%(PreprocessorDefinitions) MultiThreaded @@ -804,11 +805,11 @@ index 123e84ec4e..6272f9f69d 100644 PY_ICON;%(PreprocessorDefinitions) -diff --git a/PCbuild/venvwlauncher.vcxproj b/PCbuild/venvwlauncher.vcxproj -index b8504d5d08..60d6308713 100644 ---- a/PCbuild/venvwlauncher.vcxproj -+++ b/PCbuild/venvwlauncher.vcxproj -@@ -93,6 +93,10 @@ +diff --git a/PCbuild/venvwlauncher.vcxproj b/PCbuild/venvwlauncher.vcxproj +index b8504d5d08..60d6308713 100644 +--- a/PCbuild/venvwlauncher.vcxproj ++++ b/PCbuild/venvwlauncher.vcxproj +@@ -93,6 +93,10 @@ _WINDOWS;VENV_REDIRECT;%(PreprocessorDefinitions) MultiThreaded @@ -819,11 +820,11 @@ index b8504d5d08..60d6308713 100644 PYW_ICON;%(PreprocessorDefinitions) -diff --git a/PCbuild/winsound.vcxproj b/PCbuild/winsound.vcxproj -index 32cedc9b44..c9abee1d69 100644 ---- a/PCbuild/winsound.vcxproj -+++ b/PCbuild/winsound.vcxproj -@@ -96,6 +96,18 @@ +diff --git a/PCbuild/winsound.vcxproj b/PCbuild/winsound.vcxproj +index 32cedc9b44..c9abee1d69 100644 +--- a/PCbuild/winsound.vcxproj ++++ b/PCbuild/winsound.vcxproj +@@ -96,6 +96,18 @@ winmm.lib;%(AdditionalDependencies) @@ -842,11 +843,11 @@ index 32cedc9b44..c9abee1d69 100644 -diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj -index 1c776fb0da..36dec23c20 100644 ---- a/PCbuild/xxlimited.vcxproj -+++ b/PCbuild/xxlimited.vcxproj -@@ -93,6 +93,12 @@ +diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj +index 1c776fb0da..36dec23c20 100644 +--- a/PCbuild/xxlimited.vcxproj ++++ b/PCbuild/xxlimited.vcxproj +@@ -93,6 +93,12 @@ <_ProjectFileVersion>10.0.30319.1 @@ -859,11 +860,11 @@ index 1c776fb0da..36dec23c20 100644 wsock32.lib;%(AdditionalDependencies) -diff --git a/PCbuild/xxlimited_35.vcxproj b/PCbuild/xxlimited_35.vcxproj -index dd830b3b6a..fef2c5b9f4 100644 ---- a/PCbuild/xxlimited_35.vcxproj -+++ b/PCbuild/xxlimited_35.vcxproj -@@ -93,6 +93,12 @@ +diff --git a/PCbuild/xxlimited_35.vcxproj b/PCbuild/xxlimited_35.vcxproj +index dd830b3b6a..fef2c5b9f4 100644 +--- a/PCbuild/xxlimited_35.vcxproj ++++ b/PCbuild/xxlimited_35.vcxproj +@@ -93,6 +93,12 @@ <_ProjectFileVersion>10.0.30319.1 diff --git a/recipe/patches/0023-unvendor-xz.patch b/recipe/patches/0023-unvendor-xz.patch index 632fe08d7..b2803d077 100644 --- a/recipe/patches/0023-unvendor-xz.patch +++ b/recipe/patches/0023-unvendor-xz.patch @@ -1,17 +1,17 @@ -From ae05d55281b0ff567c0ff37fa86db701b28ed5fe Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 25 Sep 2021 10:07:05 -0700 -Subject: [PATCH 23/25] unvendor xz - ---- - PCbuild/_lzma.vcxproj | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj -index 0565132363..e8b2704cee 100644 ---- a/PCbuild/_lzma.vcxproj -+++ b/PCbuild/_lzma.vcxproj -@@ -93,15 +93,15 @@ +From ae05d55281b0ff567c0ff37fa86db701b28ed5fe Mon Sep 17 00:00:00 2001 +From: Isuru Fernando +Date: Sat, 25 Sep 2021 10:07:05 -0700 +Subject: [PATCH 23/25] unvendor xz + +--- + PCbuild/_lzma.vcxproj | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj +index 0565132363..e8b2704cee 100644 +--- a/PCbuild/_lzma.vcxproj ++++ b/PCbuild/_lzma.vcxproj +@@ -93,15 +93,15 @@ @@ -26,11 +26,11 @@ index 0565132363..e8b2704cee 100644 - $(OutDir)liblzma$(PyDebugExt).lib;%(AdditionalDependencies) -+ $(condaDir)\lib\liblzma.lib;%(AdditionalDependencies) ++ $(condaDir)\lib\lzma.lib;%(AdditionalDependencies) -@@ -115,10 +115,6 @@ +@@ -115,10 +115,6 @@ {cf7ac3d1-e2df-41d2-bea6-1e2556cdea26} false diff --git a/recipe/patches/0027-Fix-ssl-DER-EOF-detection-for-openssl-3.5.7.patch b/recipe/patches/0027-Fix-ssl-DER-EOF-detection-for-openssl-3.5.7.patch new file mode 100644 index 000000000..c088cd5b8 --- /dev/null +++ b/recipe/patches/0027-Fix-ssl-DER-EOF-detection-for-openssl-3.5.7.patch @@ -0,0 +1,68 @@ +From 863a0a7badf3919c4a710df67e98dbf5db0a2690 Mon Sep 17 00:00:00 2001 +From: David Benjamin +Date: Tue, 20 Dec 2022 10:36:19 -0500 +Subject: [PATCH 27/27] Fix ssl DER EOF detection for openssl 3.5.7 + +In PEM, we need to parse until error and then suppress +PEM_R_NO_START_LINE, because PEM allows arbitrary leading and trailing +data. DER, however, does not. Parsing until error and suppressing +ASN1_R_HEADER_TOO_LONG doesn't quite work because that error also +covers some cases that should be rejected. + +Instead, check BIO_eof early and stop the loop that way. + +Backported for OpenSSL 3.5.7 compatibility on Windows (openssl 3.5.7 +returns ASN1_R_NOT_ENOUGH_DATA at DER EOF instead of ASN1_R_HEADER_TOO_LONG). +--- + Lib/test/test_ssl.py | 2 ++ + Modules/_ssl.c | 10 ++++++---- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py +index d4eb2d2e81..f251dff95c 100644 +--- a/Lib/test/test_ssl.py ++++ b/Lib/test/test_ssl.py +@@ -1532,6 +1532,8 @@ class ContextTests(unittest.TestCase): + "not enough data: cadata does not contain a certificate" + ): + ctx.load_verify_locations(cadata=b"broken") ++ with self.assertRaises(ssl.SSLError): ++ ctx.load_verify_locations(cadata=cacert_der + b"A") + + @unittest.skipIf(Py_DEBUG_WIN32, "Avoid mixing debug/release CRT on Windows") + def test_load_dh_params(self): +diff --git a/Modules/_ssl.c b/Modules/_ssl.c +index 8f03a846ae..c740decd66 100644 +--- a/Modules/_ssl.c ++++ b/Modules/_ssl.c +@@ -3951,7 +3951,7 @@ _add_ca_certs(PySSLContext *self, const void *data, Py_ssize_t len, + { + BIO *biobuf = NULL; + X509_STORE *store; +- int retval = -1, err, loaded = 0; ++ int retval = -1, err, loaded = 0, was_bio_eof = 0; + + assert(filetype == SSL_FILETYPE_ASN1 || filetype == SSL_FILETYPE_PEM); + +@@ -3978,6 +3978,10 @@ _add_ca_certs(PySSLContext *self, const void *data, Py_ssize_t len, + int r; + + if (filetype == SSL_FILETYPE_ASN1) { ++ if (BIO_eof(biobuf)) { ++ was_bio_eof = 1; ++ break; ++ } + cert = d2i_X509_bio(biobuf, NULL); + } else { + cert = PEM_read_bio_X509(biobuf, NULL, +@@ -4014,9 +4018,7 @@ _add_ca_certs(PySSLContext *self, const void *data, Py_ssize_t len, + } + _setSSLError(get_state_ctx(self), msg, 0, __FILE__, __LINE__); + retval = -1; +- } else if ((filetype == SSL_FILETYPE_ASN1) && +- (ERR_GET_LIB(err) == ERR_LIB_ASN1) && +- (ERR_GET_REASON(err) == ASN1_R_HEADER_TOO_LONG)) { ++ } else if ((filetype == SSL_FILETYPE_ASN1) && was_bio_eof) { + /* EOF ASN1 file, not an error */ + ERR_clear_error(); + retval = 0; diff --git a/recipe/patches/0028-Fix-ctypes-fielddesc-init-for-external-libffi.patch b/recipe/patches/0028-Fix-ctypes-fielddesc-init-for-external-libffi.patch new file mode 100644 index 000000000..6238db3d3 --- /dev/null +++ b/recipe/patches/0028-Fix-ctypes-fielddesc-init-for-external-libffi.patch @@ -0,0 +1,272 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Christian Heimes +Date: Sat, 27 Nov 2021 21:41:18 +0100 +Subject: [PATCH 29/29] Fix ctypes fielddesc init for external libffi + +Backport https://github.com/python/cpython/pull/29791 (bpo-45898) for +Windows builds that link against an external libffi DLL instead of the +vendored copy. Delay fielddesc initialization and remove duplicate +ffi_type definitions from cfield.c. (FFI_BUILDING is replaced with +USING_MALLOC_CLOSURE_DOT_C=1 in 0015-Doing-d1trimfile.patch.) +--- +diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c +index 534ec94..240b73c 100644 +--- a/Modules/_ctypes/cfield.c ++++ b/Modules/_ctypes/cfield.c +@@ -1473,55 +1473,40 @@ P_get(void *ptr, Py_ssize_t size) + } + + static struct fielddesc formattable[] = { +- { 's', s_set, s_get, &ffi_type_pointer}, +- { 'b', b_set, b_get, &ffi_type_schar}, +- { 'B', B_set, B_get, &ffi_type_uchar}, +- { 'c', c_set, c_get, &ffi_type_schar}, +- { 'd', d_set, d_get, &ffi_type_double, d_set_sw, d_get_sw}, +- { 'g', g_set, g_get, &ffi_type_longdouble}, +- { 'f', f_set, f_get, &ffi_type_float, f_set_sw, f_get_sw}, +- { 'h', h_set, h_get, &ffi_type_sshort, h_set_sw, h_get_sw}, +- { 'H', H_set, H_get, &ffi_type_ushort, H_set_sw, H_get_sw}, +- { 'i', i_set, i_get, &ffi_type_sint, i_set_sw, i_get_sw}, +- { 'I', I_set, I_get, &ffi_type_uint, I_set_sw, I_get_sw}, +-/* XXX Hm, sizeof(int) == sizeof(long) doesn't hold on every platform */ +-/* As soon as we can get rid of the type codes, this is no longer a problem */ +-#if SIZEOF_LONG == 4 +- { 'l', l_set, l_get, &ffi_type_sint32, l_set_sw, l_get_sw}, +- { 'L', L_set, L_get, &ffi_type_uint32, L_set_sw, L_get_sw}, +-#elif SIZEOF_LONG == 8 +- { 'l', l_set, l_get, &ffi_type_sint64, l_set_sw, l_get_sw}, +- { 'L', L_set, L_get, &ffi_type_uint64, L_set_sw, L_get_sw}, +-#else +-# error +-#endif +-#if SIZEOF_LONG_LONG == 8 +- { 'q', q_set, q_get, &ffi_type_sint64, q_set_sw, q_get_sw}, +- { 'Q', Q_set, Q_get, &ffi_type_uint64, Q_set_sw, Q_get_sw}, +-#else +-# error +-#endif +- { 'P', P_set, P_get, &ffi_type_pointer}, +- { 'z', z_set, z_get, &ffi_type_pointer}, +- { 'u', u_set, u_get, NULL}, /* ffi_type set later */ +- { 'U', U_set, U_get, &ffi_type_pointer}, +- { 'Z', Z_set, Z_get, &ffi_type_pointer}, ++ { 's', s_set, s_get, NULL}, ++ { 'b', b_set, b_get, NULL}, ++ { 'B', B_set, B_get, NULL}, ++ { 'c', c_set, c_get, NULL}, ++ { 'd', d_set, d_get, NULL, d_set_sw, d_get_sw}, ++ { 'g', g_set, g_get, NULL}, ++ { 'f', f_set, f_get, NULL, f_set_sw, f_get_sw}, ++ { 'h', h_set, h_get, NULL, h_set_sw, h_get_sw}, ++ { 'H', H_set, H_get, NULL, H_set_sw, H_get_sw}, ++ { 'i', i_set, i_get, NULL, i_set_sw, i_get_sw}, ++ { 'I', I_set, I_get, NULL, I_set_sw, I_get_sw}, ++ { 'l', l_set, l_get, NULL, l_set_sw, l_get_sw}, ++ { 'L', L_set, L_get, NULL, L_set_sw, L_get_sw}, ++ { 'q', q_set, q_get, NULL, q_set_sw, q_get_sw}, ++ { 'Q', Q_set, Q_get, NULL, Q_set_sw, Q_get_sw}, ++ { 'P', P_set, P_get, NULL}, ++ { 'z', z_set, z_get, NULL}, ++ { 'u', u_set, u_get, NULL}, ++ { 'U', U_set, U_get, NULL}, ++ { 'Z', Z_set, Z_get, NULL}, + #ifdef MS_WIN32 +- { 'X', BSTR_set, BSTR_get, &ffi_type_pointer}, ++ { 'X', BSTR_set, BSTR_get, NULL}, + #endif +- { 'v', vBOOL_set, vBOOL_get, &ffi_type_sshort}, +-#if SIZEOF__BOOL == 1 +- { '?', bool_set, bool_get, &ffi_type_uchar}, /* Also fallback for no native _Bool support */ +-#elif SIZEOF__BOOL == SIZEOF_SHORT +- { '?', bool_set, bool_get, &ffi_type_ushort}, +-#elif SIZEOF__BOOL == SIZEOF_INT +- { '?', bool_set, bool_get, &ffi_type_uint, I_set_sw, I_get_sw}, ++ { 'v', vBOOL_set, vBOOL_get, NULL}, ++#if SIZEOF__BOOL == SIZEOF_INT ++ { '?', bool_set, bool_get, NULL, I_set_sw, I_get_sw}, + #elif SIZEOF__BOOL == SIZEOF_LONG +- { '?', bool_set, bool_get, &ffi_type_ulong, L_set_sw, L_get_sw}, ++ { '?', bool_set, bool_get, NULL, L_set_sw, L_get_sw}, + #elif SIZEOF__BOOL == SIZEOF_LONG_LONG +- { '?', bool_set, bool_get, &ffi_type_ulong, Q_set_sw, Q_get_sw}, ++ { '?', bool_set, bool_get, NULL, Q_set_sw, Q_get_sw}, ++#else ++ { '?', bool_set, bool_get, NULL}, + #endif /* SIZEOF__BOOL */ +- { 'O', O_set, O_get, &ffi_type_pointer}, ++ { 'O', O_set, O_get, NULL}, + { 0, NULL, NULL, NULL}, + }; + +@@ -1530,6 +1515,79 @@ static struct fielddesc formattable[] = { + Use '?' as code for BOOL. + */ + ++/* Delayed initialization. Windows cannot statically reference dynamically ++ loaded addresses from DLLs. */ ++void ++_ctypes_init_fielddesc(void) ++{ ++ struct fielddesc *fd = formattable; ++ for (; fd->code; ++fd) { ++ switch (fd->code) { ++ case 's': fd->pffi_type = &ffi_type_pointer; break; ++ case 'b': fd->pffi_type = &ffi_type_schar; break; ++ case 'B': fd->pffi_type = &ffi_type_uchar; break; ++ case 'c': fd->pffi_type = &ffi_type_schar; break; ++ case 'd': fd->pffi_type = &ffi_type_double; break; ++ case 'g': fd->pffi_type = &ffi_type_longdouble; break; ++ case 'f': fd->pffi_type = &ffi_type_float; break; ++ case 'h': fd->pffi_type = &ffi_type_sshort; break; ++ case 'H': fd->pffi_type = &ffi_type_ushort; break; ++ case 'i': fd->pffi_type = &ffi_type_sint; break; ++ case 'I': fd->pffi_type = &ffi_type_uint; break; ++ /* XXX Hm, sizeof(int) == sizeof(long) doesn't hold on every platform */ ++ /* As soon as we can get rid of the type codes, this is no longer a problem */ ++ #if SIZEOF_LONG == 4 ++ case 'l': fd->pffi_type = &ffi_type_sint32; break; ++ case 'L': fd->pffi_type = &ffi_type_uint32; break; ++ #elif SIZEOF_LONG == 8 ++ case 'l': fd->pffi_type = &ffi_type_sint64; break; ++ case 'L': fd->pffi_type = &ffi_type_uint64; break; ++ #else ++ #error ++ #endif ++ #if SIZEOF_LONG_LONG == 8 ++ case 'q': fd->pffi_type = &ffi_type_sint64; break; ++ case 'Q': fd->pffi_type = &ffi_type_uint64; break; ++ #else ++ #error ++ #endif ++ case 'P': fd->pffi_type = &ffi_type_pointer; break; ++ case 'z': fd->pffi_type = &ffi_type_pointer; break; ++ case 'u': ++ if (sizeof(wchar_t) == sizeof(short)) ++ fd->pffi_type = &ffi_type_sshort; ++ else if (sizeof(wchar_t) == sizeof(int)) ++ fd->pffi_type = &ffi_type_sint; ++ else if (sizeof(wchar_t) == sizeof(long)) ++ fd->pffi_type = &ffi_type_slong; ++ else ++ Py_UNREACHABLE(); ++ break; ++ case 'U': fd->pffi_type = &ffi_type_pointer; break; ++ case 'Z': fd->pffi_type = &ffi_type_pointer; break; ++ #ifdef MS_WIN32 ++ case 'X': fd->pffi_type = &ffi_type_pointer; break; ++ #endif ++ case 'v': fd->pffi_type = &ffi_type_sshort; break; ++ #if SIZEOF__BOOL == 1 ++ case '?': fd->pffi_type = &ffi_type_uchar; break; /* Also fallback for no native _Bool support */ ++ #elif SIZEOF__BOOL == SIZEOF_SHORT ++ case '?': fd->pffi_type = &ffi_type_ushort; break; ++ #elif SIZEOF__BOOL == SIZEOF_INT ++ case '?': fd->pffi_type = &ffi_type_uint; break; ++ #elif SIZEOF__BOOL == SIZEOF_LONG ++ case '?': fd->pffi_type = &ffi_type_ulong; break; ++ #elif SIZEOF__BOOL == SIZEOF_LONG_LONG ++ case '?': fd->pffi_type = &ffi_type_ulong; break; ++ #endif /* SIZEOF__BOOL */ ++ case 'O': fd->pffi_type = &ffi_type_pointer; break; ++ default: ++ Py_UNREACHABLE(); ++ } ++ } ++ ++} ++ + struct fielddesc * + _ctypes_get_fielddesc(const char *fmt) + { +@@ -1538,12 +1596,7 @@ _ctypes_get_fielddesc(const char *fmt) + + if (!initialized) { + initialized = 1; +- if (sizeof(wchar_t) == sizeof(short)) +- _ctypes_get_fielddesc("u")->pffi_type = &ffi_type_sshort; +- else if (sizeof(wchar_t) == sizeof(int)) +- _ctypes_get_fielddesc("u")->pffi_type = &ffi_type_sint; +- else if (sizeof(wchar_t) == sizeof(long)) +- _ctypes_get_fielddesc("u")->pffi_type = &ffi_type_slong; ++ _ctypes_init_fielddesc(); + } + + for (; table->code; ++table) { +@@ -1553,77 +1606,4 @@ _ctypes_get_fielddesc(const char *fmt) + return NULL; + } + +-typedef struct { char c; char x; } s_char; +-typedef struct { char c; short x; } s_short; +-typedef struct { char c; int x; } s_int; +-typedef struct { char c; long x; } s_long; +-typedef struct { char c; float x; } s_float; +-typedef struct { char c; double x; } s_double; +-typedef struct { char c; long double x; } s_long_double; +-typedef struct { char c; char *x; } s_char_p; +-typedef struct { char c; void *x; } s_void_p; +- +-/* +-#define CHAR_ALIGN (sizeof(s_char) - sizeof(char)) +-#define SHORT_ALIGN (sizeof(s_short) - sizeof(short)) +-#define LONG_ALIGN (sizeof(s_long) - sizeof(long)) +-*/ +-#define INT_ALIGN (sizeof(s_int) - sizeof(int)) +-#define FLOAT_ALIGN (sizeof(s_float) - sizeof(float)) +-#define DOUBLE_ALIGN (sizeof(s_double) - sizeof(double)) +-#define LONGDOUBLE_ALIGN (sizeof(s_long_double) - sizeof(long double)) +- +-/* #define CHAR_P_ALIGN (sizeof(s_char_p) - sizeof(char*)) */ +-#define VOID_P_ALIGN (sizeof(s_void_p) - sizeof(void*)) +- +-/* +-#ifdef HAVE_USABLE_WCHAR_T +-typedef struct { char c; wchar_t x; } s_wchar; +-typedef struct { char c; wchar_t *x; } s_wchar_p; +- +-#define WCHAR_ALIGN (sizeof(s_wchar) - sizeof(wchar_t)) +-#define WCHAR_P_ALIGN (sizeof(s_wchar_p) - sizeof(wchar_t*)) +-#endif +-*/ +- +-typedef struct { char c; long long x; } s_long_long; +-#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(long long)) +- +-/* from ffi.h: +-typedef struct _ffi_type +-{ +- size_t size; +- unsigned short alignment; +- unsigned short type; +- struct _ffi_type **elements; +-} ffi_type; +-*/ +- +-/* align and size are bogus for void, but they must not be zero */ +-ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID }; +- +-ffi_type ffi_type_uint8 = { 1, 1, FFI_TYPE_UINT8 }; +-ffi_type ffi_type_sint8 = { 1, 1, FFI_TYPE_SINT8 }; +- +-ffi_type ffi_type_uint16 = { 2, 2, FFI_TYPE_UINT16 }; +-ffi_type ffi_type_sint16 = { 2, 2, FFI_TYPE_SINT16 }; +- +-ffi_type ffi_type_uint32 = { 4, INT_ALIGN, FFI_TYPE_UINT32 }; +-ffi_type ffi_type_sint32 = { 4, INT_ALIGN, FFI_TYPE_SINT32 }; +- +-ffi_type ffi_type_uint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_UINT64 }; +-ffi_type ffi_type_sint64 = { 8, LONG_LONG_ALIGN, FFI_TYPE_SINT64 }; +- +-ffi_type ffi_type_float = { sizeof(float), FLOAT_ALIGN, FFI_TYPE_FLOAT }; +-ffi_type ffi_type_double = { sizeof(double), DOUBLE_ALIGN, FFI_TYPE_DOUBLE }; +- +-#ifdef ffi_type_longdouble +-#undef ffi_type_longdouble +-#endif +- /* This is already defined on OSX */ +-ffi_type ffi_type_longdouble = { sizeof(long double), LONGDOUBLE_ALIGN, +- FFI_TYPE_LONGDOUBLE }; +- +-ffi_type ffi_type_pointer = { sizeof(void *), VOID_P_ALIGN, FFI_TYPE_POINTER }; +- + /*---------------- EOF ----------------*/ diff --git a/recipe/run_test.py b/recipe/run_test.py index f5d7f7cfa..c778a0fe5 100644 --- a/recipe/run_test.py +++ b/recipe/run_test.py @@ -77,10 +77,8 @@ if not (ppc64le or armv7l): import _curses import _curses_panel - import crypt import fcntl import grp - import nis import readline import resource import syslog @@ -98,5 +96,6 @@ import ssl print('OPENSSL_VERSION:', ssl.OPENSSL_VERSION) -CONDA_OPENSSL_VERSION = os.getenv("openssl") -assert CONDA_OPENSSL_VERSION in ssl.OPENSSL_VERSION +# OPENSSL_VERSION is the libssl loaded at runtime, not the build-time link version. +assert ssl.OPENSSL_VERSION.startswith("OpenSSL 3."), ( + f"expected OpenSSL 3.x, got {ssl.OPENSSL_VERSION!r}")