diff --git a/Makefile b/Makefile index d49cc88..1892b89 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.14.7 +PYTHON_VERSION=3.14.8 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.5.8-1 +OPENSSL_VERSION=3.5.9-1 XZ_VERSION=5.6.4-2 ZSTD_VERSION=1.5.7-1 diff --git a/patch/Python/Python.patch b/patch/Python/Python.patch index 0810929..30d5c94 100644 --- a/patch/Python/Python.patch +++ b/patch/Python/Python.patch @@ -28,33 +28,8 @@ index 8d653230225..67186c10385 100644 - id: ruff-format name: Run Ruff (format) on Doc/ args: [--exit-non-zero-on-fix] -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 7223fc49977..37e3d0df3a9 100644 +index 1aeb21eec7e..44cc5028f1c 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -452,9 +452,9 @@ @@ -84,7 +59,7 @@ index cd67fd87efc..2724f544772 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 6a828ae75ed..e07de99fec2 100644 +index 20cb27cbd78..d59f46f7b95 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -52,7 +52,7 @@ @@ -96,7 +71,7 @@ index 6a828ae75ed..e07de99fec2 100644 _CASE_INSENSITIVE_PLATFORMS = (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY + _CASE_INSENSITIVE_PLATFORMS_STR_KEY) -@@ -1538,7 +1538,7 @@ +@@ -1542,7 +1542,7 @@ """ extension_loaders = [] if hasattr(_imp, 'create_dynamic'): @@ -277,7 +252,7 @@ index aeb7c6cfc71..3fa222ea148 100644 def joinuser(*args): diff --git a/Lib/subprocess.py b/Lib/subprocess.py -index 52b7b711770..173e6a6994a 100644 +index 1ff47af3dde..52695b5fdd9 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -75,7 +75,7 @@ @@ -332,10 +307,10 @@ index faf8273bd0b..7e9df528709 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 1b71b71c544..73dee610f84 100644 +index ef7772e7e8a..1dce7231913 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py -@@ -7210,9 +7210,9 @@ +@@ -7227,9 +7227,9 @@ self.assertEqual(dt_orig, dt_rt) def test_type_check_in_subinterp(self): @@ -348,7 +323,7 @@ index 1b71b71c544..73dee610f84 100644 else: extension_loader = "ExtensionFileLoader" diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py -index 504a0ffb401..b6f35c53e9a 100644 +index 64924a4b5a7..03109d337f8 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -586,7 +586,7 @@ @@ -465,7 +440,7 @@ index 97aad6eea50..ec1f55c76ba 100644 if objc: # If objc exists, we know ctypes is also importable. diff --git a/Makefile.pre.in b/Makefile.pre.in -index 526d500fe08..3360f167da7 100644 +index 7ca65dddb9e..af142880757 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -211,6 +211,12 @@ @@ -481,7 +456,7 @@ index 526d500fe08..3360f167da7 100644 # Option to install to strip binaries STRIPFLAG=-s -@@ -2327,7 +2333,7 @@ +@@ -2328,7 +2334,7 @@ fi # Clone the testbed project into the XCFOLDER @@ -490,7 +465,7 @@ index 526d500fe08..3360f167da7 100644 # Run the testbed project $(PYTHON_FOR_BUILD) "$(XCFOLDER)" run --verbose -- test -uall --single-process --rerun -W -@@ -3236,10 +3242,10 @@ +@@ -3237,10 +3243,10 @@ -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' -rm -f Include/pydtrace_probes.h -rm -f profile-gen-stamp @@ -505,7 +480,7 @@ index 526d500fe08..3360f167da7 100644 .PHONY: profile-removal profile-removal: -@@ -3273,7 +3279,7 @@ +@@ -3274,7 +3280,7 @@ config.cache config.log pyconfig.h Modules/config.c -rm -rf build platform -rm -rf $(PYTHONFRAMEWORKDIR) @@ -581,7 +556,7 @@ index 00000000000..f5d74fdb6af +] diff --git a/Platforms/Apple/__main__.py b/Platforms/Apple/__main__.py new file mode 100644 -index 00000000000..3d3c72cfe9d +index 00000000000..17e39fcfeb2 --- /dev/null +++ b/Platforms/Apple/__main__.py @@ -0,0 +1,1168 @@ @@ -957,7 +932,7 @@ index 00000000000..3d3c72cfe9d + for name_ver in [ + "BZip2-1.0.8-2", + "libFFI-3.4.7-2", -+ "OpenSSL-3.5.7-1", ++ "OpenSSL-3.5.9-1", + "XZ-5.6.4-2", + "mpdecimal-4.0.0-2", + "zstd-1.5.7-1", @@ -3497,10 +3472,10 @@ index 00000000000..643034e9bca + main() diff --git a/Platforms/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj b/Platforms/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj new file mode 100644 -index 00000000000..f8835a3bc58 +index 00000000000..1f9e3f23a02 --- /dev/null +++ b/Platforms/Apple/testbed/iOSTestbed.xcodeproj/project.pbxproj -@@ -0,0 +1,557 @@ +@@ -0,0 +1,563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; @@ -3511,6 +3486,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 */; }; @@ -3562,6 +3538,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 = ""; }; @@ -3623,6 +3601,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 */, @@ -3773,6 +3753,7 @@ index 00000000000..f8835a3bc58 + buildActionMask = 2147483647; + files = ( + 607A66172B0EFA380010BFC8 /* AppDelegate.m in Sources */, ++ 71CB095279CCE565BAFB69C3 /* SceneDelegate.m in Sources */, + 607A66282B0EFA390010BFC8 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; @@ -3859,7 +3840,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; @@ -3914,7 +3895,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; @@ -3940,7 +3921,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", @@ -3971,7 +3952,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", @@ -3994,7 +3975,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)"; @@ -4014,7 +3995,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)"; @@ -4232,16 +4213,17 @@ index 00000000000..f695b3b5efc +@end diff --git a/Platforms/Apple/testbed/iOSTestbed/AppDelegate.m b/Platforms/Apple/testbed/iOSTestbed/AppDelegate.m new file mode 100644 -index 00000000000..e5085399d0c +index 00000000000..fbe71bae23b --- /dev/null +++ b/Platforms/Apple/testbed/iOSTestbed/AppDelegate.m -@@ -0,0 +1,19 @@ +@@ -0,0 +1,24 @@ +// +// AppDelegate.m +// iOSTestbed +// + +#import "AppDelegate.h" ++#import "SceneDelegate.h" + +@interface AppDelegate () + @@ -4249,9 +4231,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 @@ -4318,6 +4304,51 @@ index 00000000000..5daafe73a86 + + + +diff --git a/Platforms/Apple/testbed/iOSTestbed/SceneDelegate.h b/Platforms/Apple/testbed/iOSTestbed/SceneDelegate.h +new file mode 100644 +index 00000000000..264aacadca1 +--- /dev/null ++++ b/Platforms/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/Platforms/Apple/testbed/iOSTestbed/SceneDelegate.m b/Platforms/Apple/testbed/iOSTestbed/SceneDelegate.m +new file mode 100644 +index 00000000000..e82e447985d +--- /dev/null ++++ b/Platforms/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/Platforms/Apple/testbed/iOSTestbed/app/README b/Platforms/Apple/testbed/iOSTestbed/app/README new file mode 100644 index 00000000000..46c0e8e2a29 @@ -4346,10 +4377,10 @@ index 00000000000..02c2beccfbd +When the test suite runs, this folder will be on the PYTHONPATH. diff --git a/Platforms/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist b/Platforms/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist new file mode 100644 -index 00000000000..fea45e1fad6 +index 00000000000..3a560656972 --- /dev/null +++ b/Platforms/Apple/testbed/iOSTestbed/iOSTestbed-Info.plist -@@ -0,0 +1,52 @@ +@@ -0,0 +1,62 @@ + + + @@ -4398,7 +4429,17 @@ index 00000000000..fea45e1fad6 + UIApplicationSupportsMultipleScenes + + UISceneConfigurations -+ ++ ++ UIWindowSceneSessionRoleApplication ++ ++ ++ UISceneConfigurationName ++ Default Configuration ++ UISceneDelegateClassName ++ SceneDelegate ++ ++ ++ + + + @@ -6919,7 +6960,7 @@ index 1bb6a05dc11..49febd56a37 100755 none--*) # None (no kernel, i.e. freestanding / bare metal), diff --git a/configure b/configure -index 2cb22a7806f..436fc890467 100755 +index 88f235951b6..afeef75745d 100755 --- a/configure +++ b/configure @@ -984,6 +984,10 @@ @@ -7075,8 +7116,7 @@ index 2cb22a7806f..436fc890467 100755 + prefix=$PYTHONFRAMEWORKPREFIX + PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" + RESSRCDIR=Platforms/Apple/tvOS/Resources - -- ac_config_files="$ac_config_files Apple/iOS/Resources/Info.plist" ++ + ac_config_files="$ac_config_files Platforms/Apple/tvOS/Resources/Info.plist" + + ;; @@ -7106,7 +7146,8 @@ index 2cb22a7806f..436fc890467 100755 + prefix=$PYTHONFRAMEWORKPREFIX + PYTHONFRAMEWORKINSTALLNAMEPREFIX="@rpath/$PYTHONFRAMEWORKDIR" + RESSRCDIR=Platforms/Apple/watchOS/Resources -+ + +- ac_config_files="$ac_config_files Apple/iOS/Resources/Info.plist" + ac_config_files="$ac_config_files Platforms/Apple/watchOS/Resources/Info.plist" ;; @@ -7264,20 +7305,7 @@ index 2cb22a7806f..436fc890467 100755 # checks for alternative programs -@@ -4806,12 +5004,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*) : - +@@ -4817,6 +5015,26 @@ as_fn_append CFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" as_fn_append LDFLAGS " -mios-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" ;; #( @@ -7304,7 +7332,7 @@ index 2cb22a7806f..436fc890467 100755 *) : ;; esac -@@ -7181,6 +7404,12 @@ +@@ -7186,6 +7404,12 @@ MULTIARCH="" ;; #( iOS) : MULTIARCH="" ;; #( @@ -7317,7 +7345,7 @@ index 2cb22a7806f..436fc890467 100755 FreeBSD*) : MULTIARCH="" ;; #( *) : -@@ -7201,7 +7430,7 @@ +@@ -7206,7 +7430,7 @@ printf "%s\n" "$MULTIARCH" >&6; } case $ac_sys_system in #( @@ -7326,7 +7354,7 @@ index 2cb22a7806f..436fc890467 100755 SOABI_PLATFORM=`echo "$PLATFORM_TRIPLET" | cut -d '-' -f2` ;; #( *) : SOABI_PLATFORM=$PLATFORM_TRIPLET -@@ -7264,6 +7493,18 @@ +@@ -7269,6 +7493,18 @@ PY_SUPPORT_TIER=3 ;; #( aarch64-apple-ios*/clang) : PY_SUPPORT_TIER=3 ;; #( @@ -7345,7 +7373,7 @@ index 2cb22a7806f..436fc890467 100755 aarch64-*-linux-android/clang) : PY_SUPPORT_TIER=3 ;; #( x86_64-*-linux-android/clang) : -@@ -7702,7 +7943,7 @@ +@@ -7707,7 +7943,7 @@ case $ac_sys_system in Darwin) LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; @@ -7354,7 +7382,7 @@ index 2cb22a7806f..436fc890467 100755 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; *) as_fn_error $? "Unknown platform for framework build" "$LINENO" 5;; -@@ -7768,7 +8009,7 @@ +@@ -7773,7 +8009,7 @@ BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} ;; @@ -7363,7 +7391,7 @@ index 2cb22a7806f..436fc890467 100755 LDLIBRARY='libpython$(LDVERSION).dylib' ;; AIX*) -@@ -13742,7 +13983,7 @@ +@@ -13747,7 +13983,7 @@ BLDSHARED="$LDSHARED" fi ;; @@ -7372,7 +7400,7 @@ index 2cb22a7806f..436fc890467 100755 LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" -@@ -13875,7 +14116,7 @@ +@@ -13880,7 +14116,7 @@ Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys @@ -7381,7 +7409,7 @@ index 2cb22a7806f..436fc890467 100755 LINKFORSHARED="$extra_undefs -framework CoreFoundation" # Issue #18075: the default maximum stack size (8MBytes) is too -@@ -13899,7 +14140,7 @@ +@@ -13904,7 +14140,7 @@ LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' fi LINKFORSHARED="$LINKFORSHARED" @@ -7390,7 +7418,7 @@ index 2cb22a7806f..436fc890467 100755 LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' fi ;; -@@ -15677,7 +15918,7 @@ +@@ -15682,7 +15918,7 @@ ctypes_malloc_closure=yes ;; #( @@ -7399,7 +7427,7 @@ index 2cb22a7806f..436fc890467 100755 ctypes_malloc_closure=yes ;; #( -@@ -19450,12 +19691,6 @@ +@@ -19455,12 +19691,6 @@ then : printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h @@ -7412,7 +7440,7 @@ index 2cb22a7806f..436fc890467 100755 fi ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" if test "x$ac_cv_func_explicit_bzero" = xyes -@@ -19516,18 +19751,6 @@ +@@ -19521,18 +19751,6 @@ then : printf "%s\n" "#define HAVE_FEXECVE 1" >>confdefs.h @@ -7431,7 +7459,7 @@ index 2cb22a7806f..436fc890467 100755 fi ac_fn_c_check_func "$LINENO" "fpathconf" "ac_cv_func_fpathconf" if test "x$ac_cv_func_fpathconf" = xyes -@@ -19954,24 +20177,6 @@ +@@ -19959,24 +20177,6 @@ then : printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h @@ -7456,7 +7484,7 @@ index 2cb22a7806f..436fc890467 100755 fi ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" if test "x$ac_cv_func_pread" = xyes -@@ -20290,12 +20495,6 @@ +@@ -20295,12 +20495,6 @@ then : printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h @@ -7469,7 +7497,7 @@ index 2cb22a7806f..436fc890467 100755 fi ac_fn_c_check_func "$LINENO" "sigfillset" "ac_cv_func_sigfillset" if test "x$ac_cv_func_sigfillset" = xyes -@@ -20570,11 +20769,11 @@ +@@ -20575,11 +20769,11 @@ fi @@ -7483,7 +7511,7 @@ index 2cb22a7806f..436fc890467 100755 ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" if test "x$ac_cv_func_getentropy" = xyes then : -@@ -20598,7 +20797,7 @@ +@@ -20603,7 +20797,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. @@ -7492,7 +7520,7 @@ index 2cb22a7806f..436fc890467 100755 ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3" if test "x$ac_cv_func_dup3" = xyes then : -@@ -20614,6 +20813,53 @@ +@@ -20619,6 +20813,53 @@ fi @@ -7546,7 +7574,7 @@ index 2cb22a7806f..436fc890467 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} -@@ -24085,7 +24331,8 @@ +@@ -24090,7 +24331,8 @@ # check for openpty, login_tty, and forkpty @@ -7556,7 +7584,7 @@ index 2cb22a7806f..436fc890467 100755 for ac_func in openpty do : -@@ -24199,7 +24446,7 @@ +@@ -24204,7 +24446,7 @@ fi done @@ -7565,7 +7593,7 @@ index 2cb22a7806f..436fc890467 100755 printf %s "checking for library containing login_tty... " >&6; } if test ${ac_cv_search_login_tty+y} then : -@@ -24382,6 +24629,7 @@ +@@ -24387,6 +24629,7 @@ fi done @@ -7573,7 +7601,7 @@ index 2cb22a7806f..436fc890467 100755 # check for long file support functions ac_fn_c_check_func "$LINENO" "fseek64" "ac_cv_func_fseek64" -@@ -24647,10 +24895,10 @@ +@@ -24652,10 +24895,10 @@ done @@ -7586,7 +7614,7 @@ index 2cb22a7806f..436fc890467 100755 then for ac_func in clock_settime -@@ -24967,7 +25215,7 @@ +@@ -24972,7 +25215,7 @@ e) if test "$cross_compiling" = yes then : @@ -7595,7 +7623,7 @@ index 2cb22a7806f..436fc890467 100755 ac_cv_buggy_getaddrinfo="no" elif test "${enable_ipv6+set}" = set; then ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -@@ -26992,8 +27240,8 @@ +@@ -26997,8 +27240,8 @@ LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" fi @@ -7606,7 +7634,7 @@ index 2cb22a7806f..436fc890467 100755 MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" fi -@@ -30114,7 +30362,7 @@ +@@ -30120,7 +30363,7 @@ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 printf "%s\n" "$as_me: checking for device files" >&6;} @@ -7615,7 +7643,7 @@ index 2cb22a7806f..436fc890467 100755 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no else -@@ -30667,7 +30915,7 @@ +@@ -30673,7 +30916,7 @@ with_ensurepip=no ;; #( WASI) : with_ensurepip=no ;; #( @@ -7624,7 +7652,7 @@ index 2cb22a7806f..436fc890467 100755 with_ensurepip=no ;; #( *) : with_ensurepip=upgrade -@@ -31617,6 +31865,9 @@ +@@ -31623,6 +31866,9 @@ NetBSD*) _PYTHREAD_NAME_MAXLEN=15;; # gh-131268 Darwin) _PYTHREAD_NAME_MAXLEN=63;; iOS) _PYTHREAD_NAME_MAXLEN=63;; @@ -7634,7 +7662,7 @@ index 2cb22a7806f..436fc890467 100755 FreeBSD*) _PYTHREAD_NAME_MAXLEN=19;; # gh-131268 OpenBSD*) _PYTHREAD_NAME_MAXLEN=23;; # gh-131268 *) _PYTHREAD_NAME_MAXLEN=;; -@@ -31648,7 +31899,7 @@ +@@ -31654,7 +31900,7 @@ ;; #( Darwin) : ;; #( @@ -7643,7 +7671,7 @@ index 2cb22a7806f..436fc890467 100755 -@@ -35815,7 +36066,10 @@ +@@ -35821,7 +36067,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" ;; @@ -7656,7 +7684,7 @@ index 2cb22a7806f..436fc890467 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 967d34d47a3..dc789ac0b6c 100644 +index a082848c50c..5a928494212 100644 --- a/configure.ac +++ b/configure.ac @@ -330,6 +330,15 @@ @@ -7980,20 +8008,20 @@ index 967d34d47a3..dc789ac0b6c 100644 # checks for alternative programs -@@ -979,11 +1162,28 @@ +@@ -979,15 +1162,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}"]) @@ -8012,7 +8040,7 @@ index 967d34d47a3..dc789ac0b6c 100644 ], ) -@@ -1172,6 +1372,9 @@ +@@ -1176,6 +1372,9 @@ AS_CASE([$ac_sys_system], [Darwin*], [MULTIARCH=""], [iOS], [MULTIARCH=""], @@ -8022,7 +8050,7 @@ index 967d34d47a3..dc789ac0b6c 100644 [FreeBSD*], [MULTIARCH=""], [MULTIARCH=$($CC --print-multiarch 2>/dev/null)] ) -@@ -1193,7 +1396,7 @@ +@@ -1197,7 +1396,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], @@ -8031,7 +8059,7 @@ index 967d34d47a3..dc789ac0b6c 100644 [SOABI_PLATFORM=$PLATFORM_TRIPLET] ) -@@ -1228,16 +1431,22 @@ +@@ -1232,16 +1431,22 @@ [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 @@ -8064,7 +8092,7 @@ index 967d34d47a3..dc789ac0b6c 100644 [PY_SUPPORT_TIER=0] ) -@@ -1545,7 +1754,7 @@ +@@ -1549,7 +1754,7 @@ case $ac_sys_system in Darwin) LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)';; @@ -8073,7 +8101,7 @@ index 967d34d47a3..dc789ac0b6c 100644 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)';; *) AC_MSG_ERROR([Unknown platform for framework build]);; -@@ -1610,7 +1819,7 @@ +@@ -1614,7 +1819,7 @@ BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=DYLD_LIBRARY_PATH=`pwd`${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}} ;; @@ -8082,7 +8110,7 @@ index 967d34d47a3..dc789ac0b6c 100644 LDLIBRARY='libpython$(LDVERSION).dylib' ;; AIX*) -@@ -3554,7 +3763,7 @@ +@@ -3558,7 +3763,7 @@ BLDSHARED="$LDSHARED" fi ;; @@ -8091,7 +8119,7 @@ index 967d34d47a3..dc789ac0b6c 100644 LDSHARED='$(CC) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' LDCXXSHARED='$(CXX) -dynamiclib -F . -framework $(PYTHONFRAMEWORK)' BLDSHARED="$LDSHARED" -@@ -3678,7 +3887,7 @@ +@@ -3682,7 +3887,7 @@ Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys @@ -8100,7 +8128,7 @@ index 967d34d47a3..dc789ac0b6c 100644 LINKFORSHARED="$extra_undefs -framework CoreFoundation" # Issue #18075: the default maximum stack size (8MBytes) is too -@@ -3702,7 +3911,7 @@ +@@ -3706,7 +3911,7 @@ LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' fi LINKFORSHARED="$LINKFORSHARED" @@ -8109,7 +8137,7 @@ index 967d34d47a3..dc789ac0b6c 100644 LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' fi ;; -@@ -4191,7 +4400,7 @@ +@@ -4195,7 +4400,7 @@ dnl when do we need USING_APPLE_OS_LIBFFI? ctypes_malloc_closure=yes ], @@ -8118,7 +8146,7 @@ index 967d34d47a3..dc789ac0b6c 100644 ctypes_malloc_closure=yes ], [sunos5], [AS_VAR_APPEND([LIBFFI_LIBS], [" -mimpure-text"])] -@@ -5320,9 +5529,9 @@ +@@ -5324,9 +5529,9 @@ # checks for library functions AC_CHECK_FUNCS([ \ accept4 alarm bind_textdomain_codeset chmod chown clock closefrom close_range confstr \ @@ -8130,7 +8158,7 @@ index 967d34d47a3..dc789ac0b6c 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 \ -@@ -5330,8 +5539,7 @@ +@@ -5334,8 +5539,7 @@ 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 \ @@ -8140,7 +8168,7 @@ index 967d34d47a3..dc789ac0b6c 100644 pread preadv preadv2 process_vm_readv \ pthread_cond_timedwait_relative_np pthread_condattr_setclock pthread_init \ pthread_kill pthread_get_name_np pthread_getname_np pthread_set_name_np \ -@@ -5341,7 +5549,7 @@ +@@ -5345,7 +5549,7 @@ sched_setparam sched_setscheduler sem_clockwait sem_getvalue sem_open \ sem_timedwait sem_unlink sendfile setegid seteuid setgid sethostname \ setitimer setlocale setpgid setpgrp setpriority setregid setresgid \ @@ -8149,7 +8177,7 @@ index 967d34d47a3..dc789ac0b6c 100644 sigfillset siginterrupt sigpending sigrelse sigtimedwait sigwait \ sigwaitinfo snprintf splice strftime strlcpy strsignal symlinkat sync \ sysconf sysctlbyname tcgetpgrp tcsetpgrp tempnam timegm times tmpfile \ -@@ -5356,20 +5564,28 @@ +@@ -5360,20 +5564,28 @@ AC_CHECK_FUNCS([lchmod]) fi @@ -8181,7 +8209,7 @@ index 967d34d47a3..dc789ac0b6c 100644 AC_CHECK_DECL([dirfd], [AC_DEFINE([HAVE_DIRFD], [1], [Define if you have the 'dirfd' function or macro.])], -@@ -5662,20 +5878,22 @@ +@@ -5666,20 +5878,22 @@ [@%:@include ]) # check for openpty, login_tty, and forkpty @@ -8218,7 +8246,7 @@ index 967d34d47a3..dc789ac0b6c 100644 # check for long file support functions AC_CHECK_FUNCS([fseek64 fseeko fstatvfs ftell64 ftello statvfs]) -@@ -5714,10 +5932,10 @@ +@@ -5718,10 +5932,10 @@ ]) ]) @@ -8231,7 +8259,7 @@ index 967d34d47a3..dc789ac0b6c 100644 then AC_CHECK_FUNCS([clock_settime], [], [ AC_CHECK_LIB([rt], [clock_settime], [ -@@ -5875,7 +6093,7 @@ +@@ -5879,7 +6093,7 @@ [ac_cv_buggy_getaddrinfo=no], [ac_cv_buggy_getaddrinfo=yes], [ @@ -8240,7 +8268,7 @@ index 967d34d47a3..dc789ac0b6c 100644 ac_cv_buggy_getaddrinfo="no" elif test "${enable_ipv6+set}" = set; then ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -@@ -6471,8 +6689,8 @@ +@@ -6475,8 +6689,8 @@ LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" fi @@ -8251,7 +8279,7 @@ index 967d34d47a3..dc789ac0b6c 100644 MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(PYTHONFRAMEWORKDIR)/\$(PYTHONFRAMEWORK)" fi -@@ -7147,7 +7365,7 @@ +@@ -7152,7 +7366,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. @@ -8260,7 +8288,7 @@ index 967d34d47a3..dc789ac0b6c 100644 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no else -@@ -7475,7 +7693,7 @@ +@@ -7480,7 +7694,7 @@ AS_CASE([$ac_sys_system], [Emscripten], [with_ensurepip=no], [WASI], [with_ensurepip=no], @@ -8269,7 +8297,7 @@ index 967d34d47a3..dc789ac0b6c 100644 [with_ensurepip=upgrade] ) ]) -@@ -7863,6 +8081,9 @@ +@@ -7868,6 +8082,9 @@ NetBSD*) _PYTHREAD_NAME_MAXLEN=15;; # gh-131268 Darwin) _PYTHREAD_NAME_MAXLEN=63;; iOS) _PYTHREAD_NAME_MAXLEN=63;; @@ -8279,7 +8307,7 @@ index 967d34d47a3..dc789ac0b6c 100644 FreeBSD*) _PYTHREAD_NAME_MAXLEN=19;; # gh-131268 OpenBSD*) _PYTHREAD_NAME_MAXLEN=23;; # gh-131268 *) _PYTHREAD_NAME_MAXLEN=;; -@@ -7887,7 +8108,7 @@ +@@ -7892,7 +8109,7 @@ [VxWorks*], [PY_STDLIB_MOD_SET_NA([_scproxy], [termios], [grp])], dnl The _scproxy module is available on macOS [Darwin], [],