From 66e946b7fe129435c3a56c090db23a303618aca3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 22:44:47 +0000 Subject: [PATCH 1/3] Initial plan From b58dac17b8cb23e6e1141f419db3ec42aaa087f4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 22:47:37 +0000 Subject: [PATCH 2/3] Retain patch-apple-cross for 3.13, drop for 3.14+ Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com> --- cpython-unix/build-cpython.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpython-unix/build-cpython.sh b/cpython-unix/build-cpython.sh index e6bbc5ee..28739eb2 100755 --- a/cpython-unix/build-cpython.sh +++ b/cpython-unix/build-cpython.sh @@ -59,7 +59,7 @@ cat Makefile.extra pushd Python-${PYTHON_VERSION} # configure doesn't support cross-compiling on Apple. Teach it. -if [[ "${PYBUILD_PLATFORM}" = macos* && -n "${PYTHON_MEETS_MAXIMUM_VERSION_3_12}" ]]; then +if [[ "${PYBUILD_PLATFORM}" = macos* && -n "${PYTHON_MEETS_MAXIMUM_VERSION_3_13}" ]]; then if [ "${PYTHON_MAJMIN_VERSION}" = "3.12" ]; then patch -p1 -i ${ROOT}/patch-apple-cross-3.12.patch else From ccac6d59f0b7ac311884acc76d9df89d1b6f9b6c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 22:56:52 +0000 Subject: [PATCH 3/3] Add patch-apple-cross-3.13.patch and update build script to use it Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com> --- cpython-unix/build-cpython.sh | 2 + cpython-unix/patch-apple-cross-3.13.patch | 87 +++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 cpython-unix/patch-apple-cross-3.13.patch diff --git a/cpython-unix/build-cpython.sh b/cpython-unix/build-cpython.sh index 28739eb2..b2b195f6 100755 --- a/cpython-unix/build-cpython.sh +++ b/cpython-unix/build-cpython.sh @@ -62,6 +62,8 @@ pushd Python-${PYTHON_VERSION} if [[ "${PYBUILD_PLATFORM}" = macos* && -n "${PYTHON_MEETS_MAXIMUM_VERSION_3_13}" ]]; then if [ "${PYTHON_MAJMIN_VERSION}" = "3.12" ]; then patch -p1 -i ${ROOT}/patch-apple-cross-3.12.patch + elif [ "${PYTHON_MAJMIN_VERSION}" = "3.13" ]; then + patch -p1 -i ${ROOT}/patch-apple-cross-3.13.patch else patch -p1 -i ${ROOT}/patch-apple-cross.patch fi diff --git a/cpython-unix/patch-apple-cross-3.13.patch b/cpython-unix/patch-apple-cross-3.13.patch new file mode 100644 index 00000000..f0f05b5d --- /dev/null +++ b/cpython-unix/patch-apple-cross-3.13.patch @@ -0,0 +1,87 @@ +diff --git a/configure.ac b/configure.ac +index 58f54076ff2..a734260691a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -330,6 +330,21 @@ then + *-apple-ios*) + ac_sys_system=iOS + ;; ++ *-apple-ios*) ++ ac_sys_system=iOS ++ ;; ++ *-apple-tvos*) ++ ac_sys_system=tvOS ++ ;; ++ *-apple-watchos*) ++ ac_sys_system=watchOS ++ ;; ++ *-*-darwin*) ++ ac_sys_system=Darwin ++ ;; ++ *-apple-*) ++ ac_sys_system=Darwin ++ ;; + *-*-vxworks*) + ac_sys_system=VxWorks + ;; +@@ -771,6 +786,15 @@ if test "$cross_compiling" = yes; then + ;; + esac + ;; ++ *-*-darwin*) ++ case "$host_cpu" in ++ arm*) ++ _host_ident=arm ++ ;; ++ *) ++ _host_ident=$host_cpu ++ esac ++ ;; + *-*-vxworks*) + _host_ident=$host_cpu + ;; +@@ -785,6 +809,23 @@ if test "$cross_compiling" = yes; then + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_ident:+-$_host_ident}" + fi + ++# The _PYTHON_HOST_PLATFORM environment variable is used to ++# override the platform name in distutils and sysconfig when ++# cross-compiling. On Apple, the platform name expansion logic ++# is non-trivial, including renaming MACHDEP=darwin to macosx ++# and including the deployment target (or current OS version if ++# not set). Here we always force an override based on the target ++# triple. We do this in all build configurations because historically ++# the automatic resolution has been brittle. ++case "$host" in ++aarch64-apple-darwin*) ++ _PYTHON_HOST_PLATFORM="macosx-${MACOSX_DEPLOYMENT_TARGET}-arm64" ++ ;; ++x86_64-apple-darwin*) ++ _PYTHON_HOST_PLATFORM="macosx-${MACOSX_DEPLOYMENT_TARGET}-x86_64" ++ ;; ++esac ++ + # Some systems cannot stand _XOPEN_SOURCE being defined at all; they + # disable features if it is defined, without any means to access these + # features as extensions. For these systems, we skip the definition of +@@ -1582,7 +1623,7 @@ if test $enable_shared = "yes"; then + BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)' + RUNSHARED=SHLIB_PATH=`pwd`${SHLIB_PATH:+:${SHLIB_PATH}} + ;; +- Darwin*) ++ Darwin*|iOS*|tvOS*|watchOS*) + LDLIBRARY='libpython$(LDVERSION).dylib' + BLDLIBRARY='-L. -lpython$(LDVERSION)' + RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} +@@ -3469,6 +3510,11 @@ then + Linux*|GNU*|QNX*|VxWorks*|Haiku*) + LDSHARED='$(CC) -shared' + LDCXXSHARED='$(CXX) -shared';; ++ iOS*|tvOS*|watchOS*) ++ LDSHARED='$(CC) -bundle -undefined dynamic_lookup' ++ LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' ++ BLDSHARED="$LDSHARED" ++ ;; + FreeBSD*) + if [[ "`$CC -dM -E -