aboutsummaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorAdam Johnson <AdamJohnso@gmail.com>2021-10-06 15:53:06 -0400
committerGitHub <noreply@github.com>2021-10-06 12:53:06 -0700
commit15dab6a7628cb11cc9bea72a5065eeb473099e7c (patch)
treef17c5c5e7e364f32a14b2c97e6cd09ffc12d69ad /ports
parent90e568694e88f423139ddd186288a60bdd7c54c0 (diff)
downloadvcpkg-15dab6a7628cb11cc9bea72a5065eeb473099e7c.tar.gz
vcpkg-15dab6a7628cb11cc9bea72a5065eeb473099e7c.zip
[python3] Upgrade to Python 3.10.0 (#20519)
* [python3] Update to Python 3.10.0rc2 (for testing). * [python3] Revert trivial patch changes. * [python3] Bump to 3.10.0 final. * x-add-version * update python tools to 3.10.0 * [ecm] Add patch from upstream for Python 3.10. Remove this on the next release. * x-add-version * [python3] Add patch to fix static interpreter. * x-add-version
Diffstat (limited to 'ports')
-rw-r--r--ports/ecm/fix_python_version.patch61
-rw-r--r--ports/ecm/portfile.cmake1
-rw-r--r--ports/ecm/vcpkg.json2
-rw-r--r--ports/python3/0001-static-library.patch14
-rw-r--r--ports/python3/0006-fix-duplicate-symbols.patch39
-rw-r--r--ports/python3/0006-restore-support-for-windows-7.patch (renamed from ports/python3/0007-restore-support-for-windows-7.patch)0
-rw-r--r--ports/python3/0007-workaround-windows-11-sdk-rc-compiler-error.patch (renamed from ports/python3/0008-workaround-windows-11-sdk-rc-compiler-error.patch)0
-rw-r--r--ports/python3/portfile.cmake11
-rw-r--r--ports/python3/vcpkg.json3
9 files changed, 83 insertions, 48 deletions
diff --git a/ports/ecm/fix_python_version.patch b/ports/ecm/fix_python_version.patch
new file mode 100644
index 000000000..a443bb1a6
--- /dev/null
+++ b/ports/ecm/fix_python_version.patch
@@ -0,0 +1,61 @@
+From 12f4266eb71b30da1df92a5d628d402ea1a45b3b Mon Sep 17 00:00:00 2001
+From: Michael Pyne <mpyne@kde.org>
+Date: Sun, 4 Jul 2021 18:47:45 -0400
+Subject: [PATCH] python: Bump maximum version for Python 3 module generator
+ check.
+
+The proximate problem is that the Python Module generator cmake script
+has started failing for people with Python 3.10, which a CMake backtrace
+pointing into FindPythonModuleGeneration.cmake with an error of the form
+"The max python version in PythonModuleGeneration must be updated."
+
+At least one distro has addressed this by simply patching out modules
+that happen to use this CMake module [1].
+
+From what I can tell and the testing I've done, the cause is pretty
+simple: The CMake script attempts to find the best Python 3 version by
+starting from an impossible version and working backwards until it finds
+a version that is installed.
+
+As a sanity check, if the "impossible" version is actually present, it
+aborts. But this appears to be just a sanity check, and not any sort of
+guard against buggy version handling code later.
+
+While the best fix is probably to start from a known *good* version and
+move up until we stop finding better versions, there's problems here
+(e.g. a user with 3.6 and 3.8 installed would fail to see 3.7 and so be
+left with 3.6 as the "best" match), so I opted just to increase the max
+version significantly, and improve the documentation as to what's
+happening and whether it is safe to repeat the step again later.
+
+[1]: https://bugs.gentoo.org/746866
+---
+ find-modules/FindPythonModuleGeneration.cmake | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/find-modules/FindPythonModuleGeneration.cmake b/find-modules/FindPythonModuleGeneration.cmake
+index 210ba662..6104c1f4 100644
+--- a/find-modules/FindPythonModuleGeneration.cmake
++++ b/find-modules/FindPythonModuleGeneration.cmake
+@@ -162,14 +162,19 @@ endif()
+
+ if (NOT GPB_PYTHON3_LIBRARY)
+ set(_PYTHON3_MIN_VERSION 4)
+- set(_PYTHON3_MAX_VERSION 10)
+
+- _find_python(3 ${_PYTHON3_MAX_VERSION}) # Canary check
++ # This value is safe to increment over time, it is used only as a reasonable
++ # upper bound to start searching from
++ set(_PYTHON3_MAX_VERSION 50)
++
++ _find_python(3 ${_PYTHON3_MAX_VERSION})
+
+ if (GPB_PYTHON3_LIBRARY)
+ message(FATAL_ERROR "The max python version in ${CMAKE_FIND_PACKAGE_NAME} must be updated.")
+ endif()
+
++ # Look for the highest supported version of Python 3 by looking for a minor
++ # version that doesn't exist and decrementing until we find a match.
+ set(_PYTHON3_FIND_VERSION ${_PYTHON3_MAX_VERSION})
+
+ while(NOT GPB_PYTHON3_LIBRARY
diff --git a/ports/ecm/portfile.cmake b/ports/ecm/portfile.cmake
index 53acd4d8d..191058383 100644
--- a/ports/ecm/portfile.cmake
+++ b/ports/ecm/portfile.cmake
@@ -6,6 +6,7 @@ vcpkg_from_github(
HEAD_REF master
PATCHES
fix_canberra.patch
+ fix_python_version.patch # Remove on next release
)
vcpkg_cmake_configure(
diff --git a/ports/ecm/vcpkg.json b/ports/ecm/vcpkg.json
index bc120806e..11a544924 100644
--- a/ports/ecm/vcpkg.json
+++ b/ports/ecm/vcpkg.json
@@ -1,7 +1,7 @@
{
"name": "ecm",
"version": "5.84.0",
- "port-version": 1,
+ "port-version": 2,
"description": "Extra CMake Modules (ECM), extra modules and scripts for CMake",
"homepage": "https://github.com/KDE/extra-cmake-modules",
"dependencies": [
diff --git a/ports/python3/0001-static-library.patch b/ports/python3/0001-static-library.patch
index 93a89a2e3..eef387574 100644
--- a/ports/python3/0001-static-library.patch
+++ b/ports/python3/0001-static-library.patch
@@ -58,6 +58,20 @@ index 2625d0293d..2f8bdaa931 100644
<PreprocessorDefinitions Condition="$(IncludeExternals)">_Py_HAVE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
+diff --git a/Python/sysmodule.c b/Python/sysmodule.c
+index ac49f7867a..f3583345ff 100644
+--- a/Python/sysmodule.c
++++ b/Python/sysmodule.c
+@@ -2804,6 +2804,9 @@ _PySys_InitCore(PyThreadState *tstate, PyObject *sysdict)
+ #ifdef MS_COREDLL
+ SET_SYS("dllhandle", PyLong_FromVoidPtr(PyWin_DLLhModule));
+ SET_SYS_FROM_STRING("winver", PyWin_DLLVersionString);
++#elif defined(MS_WINDOWS)
++ SET_SYS("dllhandle", PyLong_FromVoidPtr(NULL));
++ SET_SYS_FROM_STRING("winver", MS_DLL_ID);
+ #endif
+ #ifdef ABIFLAGS
+ SET_SYS_FROM_STRING("abiflags", ABIFLAGS);
--
2.28.0.windows.1
diff --git a/ports/python3/0006-fix-duplicate-symbols.patch b/ports/python3/0006-fix-duplicate-symbols.patch
deleted file mode 100644
index 251c0186a..000000000
--- a/ports/python3/0006-fix-duplicate-symbols.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 62e082c1eba79d46ba8ab4b7a556a57a2253d555 Mon Sep 17 00:00:00 2001
-From: Adam Johnson <AdamJohnso@gmail.com>
-Date: Fri, 11 Sep 2020 12:35:36 -0400
-Subject: [PATCH 6/6] fix duplicate symbols
-
----
- Modules/_winapi.c | 2 +-
- Modules/overlapped.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Modules/_winapi.c b/Modules/_winapi.c
-index e1672c4785..27148094d2 100644
---- a/Modules/_winapi.c
-+++ b/Modules/_winapi.c
-@@ -304,7 +304,7 @@ static PyMemberDef overlapped_members[] = {
- {NULL}
- };
-
--PyTypeObject OverlappedType = {
-+static PyTypeObject OverlappedType = {
- PyVarObject_HEAD_INIT(NULL, 0)
- /* tp_name */ "_winapi.Overlapped",
- /* tp_basicsize */ sizeof(OverlappedObject),
-diff --git a/Modules/overlapped.c b/Modules/overlapped.c
-index cd7869fa8a..319ea0a4b7 100644
---- a/Modules/overlapped.c
-+++ b/Modules/overlapped.c
-@@ -1756,7 +1756,7 @@ static PyGetSetDef Overlapped_getsets[] = {
- {NULL},
- };
-
--PyTypeObject OverlappedType = {
-+static PyTypeObject OverlappedType = {
- PyVarObject_HEAD_INIT(NULL, 0)
- /* tp_name */ "_overlapped.Overlapped",
- /* tp_basicsize */ sizeof(OverlappedObject),
---
-2.28.0.windows.1
-
diff --git a/ports/python3/0007-restore-support-for-windows-7.patch b/ports/python3/0006-restore-support-for-windows-7.patch
index 837666393..837666393 100644
--- a/ports/python3/0007-restore-support-for-windows-7.patch
+++ b/ports/python3/0006-restore-support-for-windows-7.patch
diff --git a/ports/python3/0008-workaround-windows-11-sdk-rc-compiler-error.patch b/ports/python3/0007-workaround-windows-11-sdk-rc-compiler-error.patch
index e5f8237d1..e5f8237d1 100644
--- a/ports/python3/0008-workaround-windows-11-sdk-rc-compiler-error.patch
+++ b/ports/python3/0007-workaround-windows-11-sdk-rc-compiler-error.patch
diff --git a/ports/python3/portfile.cmake b/ports/python3/portfile.cmake
index 8967d5a3d..b57de25bb 100644
--- a/ports/python3/portfile.cmake
+++ b/ports/python3/portfile.cmake
@@ -4,8 +4,8 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic AND VCPKG_CRT_LINKAGE STREQUAL static
endif()
set(PYTHON_VERSION_MAJOR 3)
-set(PYTHON_VERSION_MINOR 9)
-set(PYTHON_VERSION_PATCH 7)
+set(PYTHON_VERSION_MINOR 10)
+set(PYTHON_VERSION_PATCH 0)
set(PYTHON_VERSION ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH})
set(PATCHES
@@ -13,7 +13,6 @@ set(PATCHES
0003-devendor-external-dependencies.patch
0004-dont-copy-vcruntime.patch
0005-only-build-required-projects.patch
- 0006-fix-duplicate-symbols.patch
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
list(PREPEND PATCHES 0001-static-library.patch)
@@ -22,7 +21,7 @@ endif()
# Python 3.9 removed support for Windows 7. This patch re-adds support for Windows 7 and is therefore
# required to build this port on Windows 7 itself due to Python using itself in its own build system.
if("deprecated-win7-support" IN_LIST FEATURES)
- list(APPEND PATCHES 0007-restore-support-for-windows-7.patch)
+ list(APPEND PATCHES 0006-restore-support-for-windows-7.patch)
message(WARNING "Windows 7 support is deprecated and may be removed at any time.")
elseif(VCPKG_TARGET_IS_WINDOWS AND CMAKE_SYSTEM_VERSION EQUAL 6.1)
message(FATAL_ERROR "python3 requires the feature deprecated-win7-support when building on Windows 7.")
@@ -32,7 +31,7 @@ endif()
if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
vcpkg_get_windows_sdk(WINSDK_VERSION)
if("${WINSDK_VERSION}" VERSION_GREATER_EQUAL "10.0.22000")
- list(APPEND PATCHES "0008-workaround-windows-11-sdk-rc-compiler-error.patch")
+ list(APPEND PATCHES "0007-workaround-windows-11-sdk-rc-compiler-error.patch")
endif()
endif()
@@ -40,7 +39,7 @@ vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO python/cpython
REF v${PYTHON_VERSION}
- SHA512 05de4e485fb6f5f21e4e48fb4d7ec0e9a420fab243cba08663e52b8062f86df3e4f57b8afd49ad94d363ca0972ab85efe132b980a7f84188c82814b6df0ba191
+ SHA512 d83e0685c274be09da7833a3c24b7379ae0e43b43c131f11bfaccd5902f6a1c510a3ae67c42471a4281922ead3bd34856608ec47be7dd76ddd734e59906ba03b
HEAD_REF master
PATCHES ${PATCHES}
)
diff --git a/ports/python3/vcpkg.json b/ports/python3/vcpkg.json
index c3bec2e6b..22ec71666 100644
--- a/ports/python3/vcpkg.json
+++ b/ports/python3/vcpkg.json
@@ -1,7 +1,6 @@
{
"name": "python3",
- "version-semver": "3.9.7",
- "port-version": 2,
+ "version-semver": "3.10.0",
"description": "The Python programming language",
"homepage": "https://github.com/python/cpython",
"supports": "!(arm | uwp)",