diff --git a/Makefile b/Makefile index bfdcfa2..b16b8b1 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ BUILD_NUMBER=custom # of a release cycle, as official binaries won't be published. # PYTHON_MICRO_VERSION is the full version number, without any alpha/beta/rc suffix. (e.g., 3.10.0) # PYTHON_VER is the major/minor version (e.g., 3.10) -PYTHON_VERSION=3.13.15 +PYTHON_VERSION=3.13.16 PYTHON_PKG_VERSION=$(PYTHON_VERSION) PYTHON_MICRO_VERSION=$(shell echo $(PYTHON_VERSION) | grep -Eo "\d+\.\d+\.\d+") PYTHON_PKG_MICRO_VERSION=$(shell echo $(PYTHON_PKG_VERSION) | grep -Eo "\d+\.\d+\.\d+") @@ -30,7 +30,7 @@ PYTHON_VER=$(basename $(PYTHON_VERSION)) BZIP2_VERSION=1.0.8-2 LIBFFI_VERSION=3.4.7-2 MPDECIMAL_VERSION=4.0.0-2 -OPENSSL_VERSION=3.0.22-1 +OPENSSL_VERSION=3.5.9-1 XZ_VERSION=5.6.4-2 # Supported OS diff --git a/patch/Python/Python.patch b/patch/Python/Python.patch index 7bff38f..2971ead 100644 --- a/patch/Python/Python.patch +++ b/patch/Python/Python.patch @@ -2965,10 +2965,10 @@ index 00000000000..643034e9bca + main() diff --git a/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj b/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj new file mode 100644 -index 00000000000..f8835a3bc58 +index 00000000000..1f9e3f23a02 --- /dev/null +++ b/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj -@@ -0,0 +1,557 @@ +@@ -0,0 +1,563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; @@ -2979,6 +2979,7 @@ index 00000000000..f8835a3bc58 + +/* Begin PBXBuildFile section */ + 607A66172B0EFA380010BFC8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 607A66162B0EFA380010BFC8 /* AppDelegate.m */; }; ++ 71CB095279CCE565BAFB69C3 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D995ADFDE8B3EF5DDEB37874 /* SceneDelegate.m */; }; + 607A66222B0EFA390010BFC8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607A66212B0EFA390010BFC8 /* Assets.xcassets */; }; + 607A66252B0EFA390010BFC8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607A66232B0EFA390010BFC8 /* LaunchScreen.storyboard */; }; + 607A66282B0EFA390010BFC8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 607A66272B0EFA390010BFC8 /* main.m */; }; @@ -3030,6 +3031,8 @@ index 00000000000..f8835a3bc58 + 607A66122B0EFA380010BFC8 /* iOSTestbed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTestbed.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 607A66152B0EFA380010BFC8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 607A66162B0EFA380010BFC8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; ++ 83DC5E71F9D64737365A3BE4 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; }; ++ D995ADFDE8B3EF5DDEB37874 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; }; + 607A66212B0EFA390010BFC8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 607A66242B0EFA390010BFC8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 607A66272B0EFA390010BFC8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -3091,6 +3094,8 @@ index 00000000000..f8835a3bc58 + 607A66592B0F08600010BFC8 /* iOSTestbed-Info.plist */, + 607A66152B0EFA380010BFC8 /* AppDelegate.h */, + 607A66162B0EFA380010BFC8 /* AppDelegate.m */, ++ 83DC5E71F9D64737365A3BE4 /* SceneDelegate.h */, ++ D995ADFDE8B3EF5DDEB37874 /* SceneDelegate.m */, + 607A66212B0EFA390010BFC8 /* Assets.xcassets */, + 607A66232B0EFA390010BFC8 /* LaunchScreen.storyboard */, + 607A66272B0EFA390010BFC8 /* main.m */, @@ -3241,6 +3246,7 @@ index 00000000000..f8835a3bc58 + buildActionMask = 2147483647; + files = ( + 607A66172B0EFA380010BFC8 /* AppDelegate.m in Sources */, ++ 71CB095279CCE565BAFB69C3 /* SceneDelegate.m in Sources */, + 607A66282B0EFA390010BFC8 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; @@ -3327,7 +3333,7 @@ index 00000000000..f8835a3bc58 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; @@ -3382,7 +3388,7 @@ index 00000000000..f8835a3bc58 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; @@ -3408,7 +3414,7 @@ index 00000000000..f8835a3bc58 + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", @@ -3439,7 +3445,7 @@ index 00000000000..f8835a3bc58 + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", @@ -3462,7 +3468,7 @@ index 00000000000..f8835a3bc58 + DEVELOPMENT_TEAM = 3HEZE76D99; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = "\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\""; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.python.iOSTestbedTests; + PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3482,7 +3488,7 @@ index 00000000000..f8835a3bc58 + DEVELOPMENT_TEAM = 3HEZE76D99; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = "\"$(BUILT_PRODUCTS_DIR)/Python.framework/Headers\""; -+ IPHONEOS_DEPLOYMENT_TARGET = 13.0; ++ IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.python.iOSTestbedTests; + PRODUCT_NAME = "$(TARGET_NAME)"; @@ -3700,16 +3706,17 @@ index 00000000000..f695b3b5efc +@end diff --git a/Apple/testbed/iOSTestbed/AppDelegate.m b/Apple/testbed/iOSTestbed/AppDelegate.m new file mode 100644 -index 00000000000..e5085399d0c +index 00000000000..fbe71bae23b --- /dev/null +++ b/Apple/testbed/iOSTestbed/AppDelegate.m -@@ -0,0 +1,19 @@ +@@ -0,0 +1,24 @@ +// +// AppDelegate.m +// iOSTestbed +// + +#import "AppDelegate.h" ++#import "SceneDelegate.h" + +@interface AppDelegate () + @@ -3717,9 +3724,13 @@ index 00000000000..e5085399d0c + +@implementation AppDelegate + ++- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options { ++ UISceneConfiguration *configuration = [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; ++ configuration.delegateClass = [SceneDelegate class]; ++ return configuration; ++} + -+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { -+ return YES; ++- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions { +} + +@end @@ -3786,6 +3797,51 @@ index 00000000000..5daafe73a86 + + + +diff --git a/Apple/testbed/iOSTestbed/SceneDelegate.h b/Apple/testbed/iOSTestbed/SceneDelegate.h +new file mode 100644 +index 00000000000..264aacadca1 +--- /dev/null ++++ b/Apple/testbed/iOSTestbed/SceneDelegate.h +@@ -0,0 +1,12 @@ ++// ++// SceneDelegate.h ++// iOSTestbed ++// ++ ++#import ++ ++@interface SceneDelegate : UIResponder ++ ++@property (strong, nonatomic) UIWindow *window; ++ ++@end +diff --git a/Apple/testbed/iOSTestbed/SceneDelegate.m b/Apple/testbed/iOSTestbed/SceneDelegate.m +new file mode 100644 +index 00000000000..e82e447985d +--- /dev/null ++++ b/Apple/testbed/iOSTestbed/SceneDelegate.m +@@ -0,0 +1,21 @@ ++// ++// SceneDelegate.m ++// iOSTestbed ++// ++ ++#import "SceneDelegate.h" ++ ++@interface SceneDelegate () ++ ++@end ++ ++@implementation SceneDelegate ++ ++- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { ++ UIWindowScene *windowScene = (UIWindowScene *)scene; ++ self.window = [[UIWindow alloc] initWithWindowScene:windowScene]; ++ self.window.rootViewController = [[UIViewController alloc] init]; ++ [self.window makeKeyAndVisible]; ++} ++ ++@end diff --git a/Apple/testbed/iOSTestbed/app/README b/Apple/testbed/iOSTestbed/app/README new file mode 100644 index 00000000000..46c0e8e2a29 @@ -3814,10 +3870,10 @@ index 00000000000..02c2beccfbd +When the test suite runs, this folder will be on the PYTHONPATH. diff --git a/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist b/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist new file mode 100644 -index 00000000000..fea45e1fad6 +index 00000000000..3a560656972 --- /dev/null +++ b/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist -@@ -0,0 +1,52 @@ +@@ -0,0 +1,62 @@ + + + @@ -3866,7 +3922,17 @@ index 00000000000..fea45e1fad6 + UIApplicationSupportsMultipleScenes + + UISceneConfigurations -+ ++ ++ UIWindowSceneSessionRoleApplication ++ ++ ++ UISceneConfigurationName ++ Default Configuration ++ UISceneDelegateClassName ++ SceneDelegate ++ ++ ++ + + + @@ -6621,33 +6687,8 @@ index 9921fd6114b..4ed18f4938c 100644 +build script described in step 7 above, you can place a ``mymodule.xcprivacy`` +file next to ``mymodule.so``, and the privacy manifest will be installed into +the required location when the binary module is converted into a framework. -diff --git a/Lib/_ios_support.py b/Lib/_ios_support.py -index 20467a7c2bc..cc51aa50491 100644 ---- a/Lib/_ios_support.py -+++ b/Lib/_ios_support.py -@@ -10,12 +10,15 @@ - else: - # ctypes is available. Load the ObjC library, and wrap the objc_getClass, - # sel_registerName methods -- lib = util.find_library("objc") -- if lib is None: -- # Failed to load the objc library -- raise ImportError("ObjC runtime library couldn't be loaded") -+ # find_library() resolves a system library through the dyld shared cache, -+ # which needs _dyld_shared_cache_contains_path(); that is unavailable before -+ # iOS 14, so fall back to the bare name, which dyld resolves by itself. -+ lib = util.find_library("objc") or "libobjc.dylib" - -- objc = cdll.LoadLibrary(lib) -+ try: -+ objc = cdll.LoadLibrary(lib) -+ except OSError: -+ raise ImportError("ObjC runtime library couldn't be loaded") - objc.objc_getClass.restype = c_void_p - objc.objc_getClass.argtypes = [c_char_p] - objc.sel_registerName.restype = c_void_p diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py -index 7fc1181f25a..7cbcccef334 100644 +index c430f9faa47..e733003e965 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -380,9 +380,9 @@ @@ -6677,7 +6718,7 @@ index 43f10dedce8..7cbc6039fa2 100644 def find_library(name): possible = ['lib%s.dylib' % name, diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py -index 0741f62ee83..6799a1f744f 100644 +index fcfe312747c..e02a897ea08 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -52,7 +52,7 @@ @@ -6689,7 +6730,7 @@ index 0741f62ee83..6799a1f744f 100644 _CASE_INSENSITIVE_PLATFORMS = (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY + _CASE_INSENSITIVE_PLATFORMS_STR_KEY) -@@ -1802,7 +1802,7 @@ +@@ -1806,7 +1806,7 @@ """ extension_loaders = [] if hasattr(_imp, 'create_dynamic'): @@ -6870,7 +6911,7 @@ index 041dca113a5..3dedc828524 100644 def joinuser(*args): diff --git a/Lib/subprocess.py b/Lib/subprocess.py -index 3a8c7434d37..8ca02d8e1a1 100644 +index e845f48a407..b64a0553973 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -75,7 +75,7 @@ @@ -6925,10 +6966,10 @@ index 43edebce347..dd6acc0fd9f 100644 import _osx_support osname, release, machine = _osx_support.get_platform_osx( diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py -index c0f2400456f..e507319095b 100644 +index ca60e204cff..ab7aeba9e7d 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py -@@ -6879,9 +6879,9 @@ +@@ -6897,9 +6897,9 @@ self.assertEqual(dt_orig, dt_rt) def test_type_check_in_subinterp(self): @@ -6941,10 +6982,10 @@ index c0f2400456f..e507319095b 100644 else: extension_loader = "ExtensionFileLoader" diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py -index 6d8a1e786a4..4400c822c34 100644 +index abc525b80e0..1621ff9eecd 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py -@@ -65,6 +65,7 @@ +@@ -66,6 +66,7 @@ "force_not_colorized_test_class", "make_clean_env", "BrokenIter", @@ -6952,7 +6993,7 @@ index 6d8a1e786a4..4400c822c34 100644 ] -@@ -593,7 +594,7 @@ +@@ -594,7 +595,7 @@ is_android = sys.platform == "android" @@ -6961,7 +7002,7 @@ index 6d8a1e786a4..4400c822c34 100644 unix_shell = '/system/bin/sh' if is_android else '/bin/sh' else: unix_shell = None -@@ -603,7 +604,7 @@ +@@ -604,7 +605,7 @@ is_emscripten = sys.platform == "emscripten" is_wasi = sys.platform == "wasi" @@ -6970,7 +7011,7 @@ index 6d8a1e786a4..4400c822c34 100644 is_apple = is_apple_mobile or sys.platform == "darwin" has_fork_support = hasattr(os, "fork") and not ( -@@ -1357,6 +1358,8 @@ +@@ -1348,6 +1349,8 @@ _opcode.ENABLE_SPECIALIZATION, "requires specialization")(test) @@ -7083,7 +7124,7 @@ index be033d707a9..8e47e6576fe 100755 if objc: # If objc exists, we know ctypes is also importable. diff --git a/Makefile.pre.in b/Makefile.pre.in -index 2363b99a25c..bf7b949c294 100644 +index 8fdbbd83b4b..9938ec463c8 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -202,6 +202,12 @@ @@ -7099,7 +7140,7 @@ index 2363b99a25c..bf7b949c294 100644 # Option to install to strip binaries STRIPFLAG=-s -@@ -2093,7 +2099,7 @@ +@@ -2094,7 +2100,7 @@ fi # Clone the testbed project into the XCFOLDER @@ -7108,7 +7149,7 @@ index 2363b99a25c..bf7b949c294 100644 # Run the testbed project $(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W -@@ -2797,6 +2803,9 @@ +@@ -2798,6 +2804,9 @@ $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR) sed 's/%VERSION%/'"`$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Info.plist $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY) @@ -7118,7 +7159,7 @@ index 2363b99a25c..bf7b949c294 100644 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(BINDIR) for file in $(srcdir)/$(RESSRCDIR)/bin/* ; do \ $(INSTALL) -m $(EXEMODE) $$file $(DESTDIR)$(BINDIR); \ -@@ -2981,10 +2990,10 @@ +@@ -2982,10 +2991,10 @@ -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' -rm -f Include/pydtrace_probes.h -rm -f profile-gen-stamp @@ -7133,7 +7174,7 @@ index 2363b99a25c..bf7b949c294 100644 .PHONY: profile-removal profile-removal: -@@ -3018,7 +3027,7 @@ +@@ -3019,7 +3028,7 @@ config.cache config.log pyconfig.h Modules/config.c -rm -rf build platform -rm -rf $(PYTHONFRAMEWORKDIR) @@ -7202,7 +7243,7 @@ index 1bb6a05dc11..49febd56a37 100755 none--*) # None (no kernel, i.e. freestanding / bare metal), diff --git a/configure b/configure -index 51e657ff0d6..e8065ec5624 100755 +index 73d317a659b..7c01263e25d 100755 --- a/configure +++ b/configure @@ -979,6 +979,10 @@ @@ -7358,8 +7399,7 @@ index 51e657ff0d6..e8065ec5624 100755 + prefix=$PYTHONFRAMEWORKPREFIX + PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" + RESSRCDIR=Apple/tvOS/Resources - -- ac_config_files="$ac_config_files iOS/Resources/Info.plist" ++ + ac_config_files="$ac_config_files Apple/tvOS/Resources/Info.plist" + + ;; @@ -7389,7 +7429,8 @@ index 51e657ff0d6..e8065ec5624 100755 + prefix=$PYTHONFRAMEWORKPREFIX + PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" + RESSRCDIR=Apple/watchOS/Resources -+ + +- ac_config_files="$ac_config_files iOS/Resources/Info.plist" + ac_config_files="$ac_config_files Apple/watchOS/Resources/Info.plist" ;; @@ -7547,20 +7588,7 @@ index 51e657ff0d6..e8065ec5624 100755 # checks for alternative programs -@@ -4703,12 +4901,37 @@ - ;; - esac - --case $ac_sys_system in #( -- iOS) : -+case $host in #( -+ *-apple-ios*-simulator) : -+ -+ as_fn_append CFLAGS " -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" -+ as_fn_append LDFLAGS " -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" -+ ;; #( -+ *-apple-ios*) : - +@@ -4714,6 +4912,26 @@ as_fn_append CFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" as_fn_append LDFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" ;; #( @@ -7587,7 +7615,7 @@ index 51e657ff0d6..e8065ec5624 100755 *) : ;; esac -@@ -7010,6 +7233,12 @@ +@@ -7015,6 +7233,12 @@ MULTIARCH="" ;; #( iOS) : MULTIARCH="" ;; #( @@ -7600,7 +7628,7 @@ index 51e657ff0d6..e8065ec5624 100755 FreeBSD*) : MULTIARCH="" ;; #( *) : -@@ -7030,7 +7259,7 @@ +@@ -7035,7 +7259,7 @@ printf "%s\n" "$MULTIARCH" >&6; } case $ac_sys_system in #( @@ -7609,7 +7637,7 @@ index 51e657ff0d6..e8065ec5624 100755 SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f2` ;; #( *) : SOABI_PLATFORM=$PLATFORM_TRIPLET -@@ -7081,6 +7310,18 @@ +@@ -7086,6 +7310,18 @@ PY_SUPPORT_TIER=3 ;; #( aarch64-apple-ios*/clang) : PY_SUPPORT_TIER=3 ;; #( @@ -7628,7 +7656,7 @@ index 51e657ff0d6..e8065ec5624 100755 aarch64-*-linux-android/clang) : PY_SUPPORT_TIER=3 ;; #( x86_64-*-linux-android/clang) : -@@ -7554,7 +7795,7 @@ +@@ -7559,7 +7795,7 @@ case $ac_sys_system in Darwin) LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; @@ -7637,7 +7665,7 @@ index 51e657ff0d6..e8065ec5624 100755 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; *) as_fn_error $? "Unknown platform for framework build" "$LINENO" 5;; -@@ -7620,7 +7861,7 @@ +@@ -7625,7 +7861,7 @@ BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} ;; @@ -7646,7 +7674,7 @@ index 51e657ff0d6..e8065ec5624 100755 LDLIBRARY='libpython$(LDVERSION).dylib' ;; AIX*) -@@ -13069,7 +13310,7 @@ +@@ -13074,7 +13310,7 @@ BLDSHARED="$LDSHARED" fi ;; @@ -7655,7 +7683,7 @@ index 51e657ff0d6..e8065ec5624 100755 LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" -@@ -13202,7 +13443,7 @@ +@@ -13207,7 +13443,7 @@ Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys @@ -7664,7 +7692,7 @@ index 51e657ff0d6..e8065ec5624 100755 LINKFORSHARED="$extra_undefs -framework CoreFoundation" # Issue #18075: the default maximum stack size (8MBytes) is too -@@ -13226,7 +13467,7 @@ +@@ -13231,7 +13467,7 @@ LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' fi LINKFORSHARED="$LINKFORSHARED" @@ -7673,7 +7701,7 @@ index 51e657ff0d6..e8065ec5624 100755 LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' fi ;; -@@ -14823,7 +15064,7 @@ +@@ -14828,7 +15064,7 @@ ctypes_malloc_closure=yes ;; #( @@ -7682,7 +7710,7 @@ index 51e657ff0d6..e8065ec5624 100755 ctypes_malloc_closure=yes ;; #( -@@ -18286,12 +18527,6 @@ +@@ -18291,12 +18527,6 @@ then : printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h @@ -7695,7 +7723,7 @@ index 51e657ff0d6..e8065ec5624 100755 fi ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" if test "x$ac_cv_func_explicit_bzero" = xyes -@@ -18352,18 +18587,6 @@ +@@ -18357,18 +18587,6 @@ then : printf "%s\n" "#define HAVE_FEXECVE 1" >>confdefs.h @@ -7714,7 +7742,7 @@ index 51e657ff0d6..e8065ec5624 100755 fi ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf" if test "x$ac_cv_func_fpathconf" = xyes -@@ -18790,24 +19013,6 @@ +@@ -18795,24 +19013,6 @@ then : printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h @@ -7739,7 +7767,7 @@ index 51e657ff0d6..e8065ec5624 100755 fi ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" if test "x$ac_cv_func_pread" = xyes -@@ -19096,12 +19301,6 @@ +@@ -19101,12 +19301,6 @@ then : printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h @@ -7752,7 +7780,7 @@ index 51e657ff0d6..e8065ec5624 100755 fi ac_fn_c_check_func "$LINENO" "sigfillset" "ac_cv_func_sigfillset" if test "x$ac_cv_func_sigfillset" = xyes -@@ -19376,11 +19575,11 @@ +@@ -19381,11 +19575,11 @@ fi @@ -7766,7 +7794,7 @@ index 51e657ff0d6..e8065ec5624 100755 ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" if test "x$ac_cv_func_getentropy" = xyes then : -@@ -19404,7 +19603,7 @@ +@@ -19409,7 +19603,7 @@ # In addition, macOS introduced dup3 and pipe2 in macOS 27, late in the # lifetime of this version of Python. Rather than adding weaklinking # support for them, just continue to ignore them. @@ -7775,7 +7803,7 @@ index 51e657ff0d6..e8065ec5624 100755 ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3" if test "x$ac_cv_func_dup3" = xyes then : -@@ -19420,6 +19619,53 @@ +@@ -19425,6 +19619,53 @@ fi @@ -7829,7 +7857,7 @@ index 51e657ff0d6..e8065ec5624 100755 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } if test ${ac_cv_c_undeclared_builtin_options+y} -@@ -22242,7 +22488,8 @@ +@@ -22247,7 +22488,8 @@ # check for openpty, login_tty, and forkpty @@ -7839,7 +7867,7 @@ index 51e657ff0d6..e8065ec5624 100755 for ac_func in openpty do : -@@ -22338,7 +22585,7 @@ +@@ -22343,7 +22585,7 @@ fi done @@ -7848,7 +7876,7 @@ index 51e657ff0d6..e8065ec5624 100755 printf %s "checking for library containing login_tty... " >&6; } if test ${ac_cv_search_login_tty+y} then : -@@ -22495,6 +22742,7 @@ +@@ -22500,6 +22742,7 @@ fi done @@ -7856,7 +7884,7 @@ index 51e657ff0d6..e8065ec5624 100755 # check for long file support functions ac_fn_c_check_func "$LINENO" "fseek64" "ac_cv_func_fseek64" -@@ -22741,10 +22989,10 @@ +@@ -22746,10 +22989,10 @@ done @@ -7869,7 +7897,7 @@ index 51e657ff0d6..e8065ec5624 100755 then for ac_func in clock_settime -@@ -23030,7 +23278,7 @@ +@@ -23035,7 +23278,7 @@ if test "$cross_compiling" = yes then : @@ -7878,7 +7906,7 @@ index 51e657ff0d6..e8065ec5624 100755 ac_cv_buggy_getaddrinfo="no" elif test "${enable_ipv6+set}" = set; then ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -@@ -24979,8 +25227,8 @@ +@@ -24984,8 +25227,8 @@ LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" fi @@ -7889,7 +7917,7 @@ index 51e657ff0d6..e8065ec5624 100755 MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" fi -@@ -27970,7 +28218,7 @@ +@@ -27976,7 +28219,7 @@ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 printf "%s\n" "$as_me: checking for device files" >&6;} @@ -7898,7 +7926,7 @@ index 51e657ff0d6..e8065ec5624 100755 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no else -@@ -28403,7 +28651,7 @@ +@@ -28409,7 +28652,7 @@ with_ensurepip=no ;; #( WASI) : with_ensurepip=no ;; #( @@ -7907,7 +7935,7 @@ index 51e657ff0d6..e8065ec5624 100755 with_ensurepip=no ;; #( *) : with_ensurepip=upgrade -@@ -29422,7 +29670,7 @@ +@@ -29428,7 +29671,7 @@ ;; #( Darwin) : ;; #( @@ -7916,7 +7944,7 @@ index 51e657ff0d6..e8065ec5624 100755 -@@ -33186,7 +33434,10 @@ +@@ -33192,7 +33435,10 @@ "Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; "Mac/Resources/framework/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/framework/Info.plist" ;; "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;; @@ -7929,7 +7957,7 @@ index 51e657ff0d6..e8065ec5624 100755 "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;; "Misc/python-embed.pc") CONFIG_FILES="$CONFIG_FILES Misc/python-embed.pc" ;; diff --git a/configure.ac b/configure.ac -index f93a9f29b39..bd07696c674 100644 +index 4ef6de9dd6e..45a05334cb1 100644 --- a/configure.ac +++ b/configure.ac @@ -330,6 +330,15 @@ @@ -8253,20 +8281,20 @@ index f93a9f29b39..bd07696c674 100644 # checks for alternative programs -@@ -944,11 +1127,28 @@ +@@ -944,15 +1127,28 @@ ], ) -dnl Add the compiler flag for the iOS minimum supported OS version. --AS_CASE([$ac_sys_system], -- [iOS], [ +dnl Add the compiler flag for the iOS/tvOS/watchOS minimum supported OS +dnl version. visionOS doesn't use an explicit -mxros-version-min option - +dnl it encodes the min version into the target triple. -+AS_CASE([$host], -+ [*-apple-ios*-simulator], [ -+ AS_VAR_APPEND([CFLAGS], [" -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) -+ AS_VAR_APPEND([LDFLAGS], [" -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) + AS_CASE([$host], + [*-apple-ios*-simulator], [ + AS_VAR_APPEND([CFLAGS], [" -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) + AS_VAR_APPEND([LDFLAGS], [" -mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) +- ], +- [*-apple-ios*], [ + ],[*-apple-ios*], [ AS_VAR_APPEND([CFLAGS], [" -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) AS_VAR_APPEND([LDFLAGS], [" -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}"]) @@ -8285,7 +8313,7 @@ index f93a9f29b39..bd07696c674 100644 ], ) -@@ -1136,6 +1336,9 @@ +@@ -1140,6 +1336,9 @@ AS_CASE([$ac_sys_system], [Darwin*], [MULTIARCH=""], [iOS], [MULTIARCH=""], @@ -8295,7 +8323,7 @@ index f93a9f29b39..bd07696c674 100644 [FreeBSD*], [MULTIARCH=""], [MULTIARCH=$($CC --print-multiarch 2>/dev/null)] ) -@@ -1157,7 +1360,7 @@ +@@ -1161,7 +1360,7 @@ dnl use a single "fat" binary at runtime. SOABI_PLATFORM is the component of dnl the PLATFORM_TRIPLET that will be used in binary module extensions. AS_CASE([$ac_sys_system], @@ -8304,7 +8332,7 @@ index f93a9f29b39..bd07696c674 100644 [SOABI_PLATFORM=$PLATFORM_TRIPLET] ) -@@ -1184,15 +1387,21 @@ +@@ -1188,15 +1387,21 @@ [wasm32-unknown-wasip1/clang], [PY_SUPPORT_TIER=2], dnl WebAssembly System Interface preview1, clang [x86_64-*-linux-gnu/clang], [PY_SUPPORT_TIER=2], dnl Linux on AMD64, any vendor, glibc, clang @@ -8335,7 +8363,7 @@ index f93a9f29b39..bd07696c674 100644 [PY_SUPPORT_TIER=0] ) -@@ -1525,7 +1734,7 @@ +@@ -1529,7 +1734,7 @@ case $ac_sys_system in Darwin) LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; @@ -8344,7 +8372,7 @@ index f93a9f29b39..bd07696c674 100644 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; *) AC_MSG_ERROR([Unknown platform for framework build]);; -@@ -1590,7 +1799,7 @@ +@@ -1594,7 +1799,7 @@ BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} ;; @@ -8353,7 +8381,7 @@ index f93a9f29b39..bd07696c674 100644 LDLIBRARY='libpython$(LDVERSION).dylib' ;; AIX*) -@@ -3512,7 +3721,7 @@ +@@ -3516,7 +3721,7 @@ BLDSHARED="$LDSHARED" fi ;; @@ -8362,7 +8390,7 @@ index f93a9f29b39..bd07696c674 100644 LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" -@@ -3636,7 +3845,7 @@ +@@ -3640,7 +3845,7 @@ Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys @@ -8371,7 +8399,7 @@ index f93a9f29b39..bd07696c674 100644 LINKFORSHARED="$extra_undefs -framework CoreFoundation" # Issue #18075: the default maximum stack size (8MBytes) is too -@@ -3660,7 +3869,7 @@ +@@ -3664,7 +3869,7 @@ LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' fi LINKFORSHARED="$LINKFORSHARED" @@ -8380,7 +8408,7 @@ index f93a9f29b39..bd07696c674 100644 LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' fi ;; -@@ -4133,7 +4342,7 @@ +@@ -4137,7 +4342,7 @@ dnl when do we need USING_APPLE_OS_LIBFFI? ctypes_malloc_closure=yes ], @@ -8389,7 +8417,7 @@ index f93a9f29b39..bd07696c674 100644 ctypes_malloc_closure=yes ], [sunos5], [AS_VAR_APPEND([LIBFFI_LIBS], [" -mimpure-text"])] -@@ -5244,9 +5453,9 @@ +@@ -5248,9 +5453,9 @@ # checks for library functions AC_CHECK_FUNCS([ \ accept4 alarm bind_textdomain_codeset chmod chown clock closefrom close_range confstr \ @@ -8401,7 +8429,7 @@ index f93a9f29b39..bd07696c674 100644 gai_strerror getegid geteuid getgid getgrent getgrgid getgrgid_r \ getgrnam_r getgrouplist gethostname getitimer getloadavg getlogin getlogin_r \ getpeername getpgid getpid getppid getpriority _getpty \ -@@ -5254,15 +5463,14 @@ +@@ -5258,15 +5463,14 @@ getspnam getuid getwd grantpt if_nameindex initgroups kill killpg lchown linkat \ lockf lstat lutimes madvise mbrtowc memrchr mkdirat mkfifo mkfifoat \ mknod mknodat mktime mmap mremap nice openat opendir pathconf pause pipe \ @@ -8419,7 +8447,7 @@ index f93a9f29b39..bd07696c674 100644 sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait \ sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync \ sysconf sysctlbyname tcgetpgrp tcsetpgrp tempnam timegm times tmpfile \ -@@ -5277,20 +5485,28 @@ +@@ -5281,20 +5485,28 @@ AC_CHECK_FUNCS([lchmod]) fi @@ -8451,7 +8479,7 @@ index f93a9f29b39..bd07696c674 100644 AC_CHECK_DECL([dirfd], [AC_DEFINE([HAVE_DIRFD], [1], [Define if you have the 'dirfd' function or macro.])], -@@ -5551,20 +5767,22 @@ +@@ -5555,20 +5767,22 @@ [@%:@include ]) # check for openpty, login_tty, and forkpty @@ -8488,7 +8516,7 @@ index f93a9f29b39..bd07696c674 100644 # check for long file support functions AC_CHECK_FUNCS([fseek64 fseeko fstatvfs ftell64 ftello statvfs]) -@@ -5603,10 +5821,10 @@ +@@ -5607,10 +5821,10 @@ ]) ]) @@ -8501,7 +8529,7 @@ index f93a9f29b39..bd07696c674 100644 then AC_CHECK_FUNCS([clock_settime], [], [ AC_CHECK_LIB([rt], [clock_settime], [ -@@ -5764,7 +5982,7 @@ +@@ -5768,7 +5982,7 @@ [ac_cv_buggy_getaddrinfo=no], [ac_cv_buggy_getaddrinfo=yes], [ @@ -8510,7 +8538,7 @@ index f93a9f29b39..bd07696c674 100644 ac_cv_buggy_getaddrinfo="no" elif test "${enable_ipv6+set}" = set; then ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -@@ -6358,8 +6576,8 @@ +@@ -6362,8 +6576,8 @@ LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" fi @@ -8521,7 +8549,7 @@ index f93a9f29b39..bd07696c674 100644 MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" fi -@@ -7034,7 +7252,7 @@ +@@ -7039,7 +7253,7 @@ dnl NOTE: Inform user how to proceed with files when cross compiling. dnl Some cross-compile builds are predictable; they won't ever dnl have /dev/ptmx or /dev/ptc, so we can set them explicitly. @@ -8530,7 +8558,7 @@ index f93a9f29b39..bd07696c674 100644 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no else -@@ -7291,7 +7509,7 @@ +@@ -7296,7 +7510,7 @@ AS_CASE([$ac_sys_system], [Emscripten], [with_ensurepip=no], [WASI], [with_ensurepip=no], @@ -8539,7 +8567,7 @@ index f93a9f29b39..bd07696c674 100644 [with_ensurepip=upgrade] ) ]) -@@ -7699,7 +7917,7 @@ +@@ -7704,7 +7918,7 @@ [VxWorks*], [PY_STDLIB_MOD_SET_NA([_scproxy], [termios], [grp])], dnl The _scproxy module is available on macOS [Darwin], [],