]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43568: Drop support for MACOSX_DEPLOYMENT_TARGET < 10.3 (GH-25827)
authorNed Deily <nad@python.org>
Mon, 3 May 2021 00:28:43 +0000 (20:28 -0400)
committerGitHub <noreply@github.com>
Mon, 3 May 2021 00:28:43 +0000 (20:28 -0400)
Only complain if the config target is >= 10.3 and the current target is
< 10.3. The check was originally added to ensure that incompatible
LDSHARED flags are not used, because -undefined dynamic_lookup is
used when building for 10.3 and later, and is not supported on older OS
versions. Apart from that, there should be no problem in general
with using an older target.

Authored-by: Joshua Root <jmr@macports.org>
Lib/_osx_support.py
Lib/distutils/spawn.py
Lib/test/test_posix.py
Misc/NEWS.d/next/macOS/2021-05-02-19-50-52.bpo-43568.AeLNBd.rst [new file with mode: 0644]
configure
configure.ac

index 72f4819c29092a0c5d36b66035694f0634236034..b7145ee069fa32c5fd5da9d8abec0014ef045332 100644 (file)
@@ -525,10 +525,10 @@ def get_platform_osx(_config_vars, osname, release, machine):
             try:
                 macrelease = tuple(int(i) for i in macrelease.split('.')[0:2])
             except ValueError:
-                macrelease = (10, 0)
+                macrelease = (10, 3)
         else:
             # assume no universal support
-            macrelease = (10, 0)
+            macrelease = (10, 3)
 
         if (macrelease >= (10, 4)) and '-arch' in cflags.strip():
             # The universal build will build fat binaries, but not on
index 0d1bd0391e6f1134e4472d7e133d8302d564a7dc..31df3f7faca5523a39083cca1a01fe6b3e23fff4 100644 (file)
@@ -59,13 +59,17 @@ def spawn(cmd, search_path=1, verbose=0, dry_run=0):
             if _cfg_target:
                 _cfg_target_split = [int(x) for x in _cfg_target.split('.')]
         if _cfg_target:
-            # ensure that the deployment target of build process is not less
-            # than that used when the interpreter was built. This ensures
-            # extension modules are built with correct compatibility values
+            # Ensure that the deployment target of the build process is not
+            # less than 10.3 if the interpreter was built for 10.3 or later.
+            # This ensures extension modules are built with correct
+            # compatibility values, specifically LDSHARED which can use
+            # '-undefined dynamic_lookup' which only works on >= 10.3.
             cur_target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', _cfg_target)
-            if _cfg_target_split > [int(x) for x in cur_target.split('.')]:
+            cur_target_split = [int(x) for x in cur_target.split('.')]
+            if _cfg_target_split[:2] >= [10, 3] and cur_target_split[:2] < [10, 3]:
                 my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: '
-                          'now "%s" but "%s" during configure'
+                          'now "%s" but "%s" during configure;'
+                          'must use 10.3 or later'
                                 % (cur_target, _cfg_target))
                 raise DistutilsPlatformError(my_msg)
             env = dict(os.environ,
index 93611f04515ae991a21e9db250089219c70b0d0c..e4666884ce06a1137759d3fd96ce7fb95e20e44b 100644 (file)
@@ -1070,7 +1070,7 @@ class PosixTester(unittest.TestCase):
         # Issues 16698: OS X ABIs prior to 10.6 have limits on getgroups()
         if sys.platform == 'darwin':
             import sysconfig
-            dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.0'
+            dt = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') or '10.3'
             if tuple(int(n) for n in dt.split('.')[0:2]) < (10, 6):
                 raise unittest.SkipTest("getgroups(2) is broken prior to 10.6")
 
diff --git a/Misc/NEWS.d/next/macOS/2021-05-02-19-50-52.bpo-43568.AeLNBd.rst b/Misc/NEWS.d/next/macOS/2021-05-02-19-50-52.bpo-43568.AeLNBd.rst
new file mode 100644 (file)
index 0000000..3bc9b0b
--- /dev/null
@@ -0,0 +1 @@
+Drop support for MACOSX_DEPLOYMENT_TARGET < 10.3
index 86591e2ed2cf829c56f2645930cc6444073016f5..e3e6dada2093915fa59aadb6e3183c3dec3d8eba 100755 (executable)
--- a/configure
+++ b/configure
@@ -9656,19 +9656,7 @@ then
                   test ${dep_target_minor} -le 2
                then
                        # building for OS X 10.0 through 10.2
-                       LDSHARED='$(CC) -bundle'
-                       LDCXXSHARED='$(CXX) -bundle'
-                       if test "$enable_framework" ; then
-                               # Link against the framework. All externals should be defined.
-                               BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                               LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                               LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                       else
-                               # No framework, use the Python app as bundle-loader
-                               BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
-                               LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
-                               LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
-                       fi
+                       as_fn_error $? "MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported" "$LINENO" 5
                else
                        # building for OS X 10.3 and later
                        LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
index 0ea9ecf6d6a498961dc4f51e51ae98c1d0a80467..366ab2c84ae070f6135241bffca46957b75d0118 100644 (file)
@@ -2651,19 +2651,7 @@ then
                   test ${dep_target_minor} -le 2
                then
                        # building for OS X 10.0 through 10.2
-                       LDSHARED='$(CC) -bundle'
-                       LDCXXSHARED='$(CXX) -bundle'
-                       if test "$enable_framework" ; then
-                               # Link against the framework. All externals should be defined.
-                               BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                               LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                               LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
-                       else
-                               # No framework, use the Python app as bundle-loader
-                               BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
-                               LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
-                               LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
-                       fi
+                       AC_MSG_ERROR([MACOSX_DEPLOYMENT_TARGET too old ($MACOSX_DEPLOYMENT_TARGET), only 10.3 or later is supported])
                else
                        # building for OS X 10.3 and later
                        LDSHARED='$(CC) -bundle -undefined dynamic_lookup'