diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index 72f4819c29092a..b7145ee069fa32 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -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 diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd0391e6f11..31df3f7faca552 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -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, diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 93611f04515ae9..e4666884ce06a1 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -1070,7 +1070,7 @@ def test_getgroups(self): # 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 index 00000000000000..3bc9b0b55bbd35 --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2021-05-02-19-50-52.bpo-43568.AeLNBd.rst @@ -0,0 +1 @@ +Drop support for MACOSX_DEPLOYMENT_TARGET < 10.3 diff --git a/configure b/configure index 86591e2ed2cf82..e3e6dada209391 100755 --- 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' diff --git a/configure.ac b/configure.ac index 0ea9ecf6d6a498..366ab2c84ae070 100644 --- a/configure.ac +++ b/configure.ac @@ -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'