<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a46ff542a98c6c6d2310cf95be94f20c646b8db4">https://github.com/macports/macports-ports/commit/a46ff542a98c6c6d2310cf95be94f20c646b8db4</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit a46ff542a98c6c6d2310cf95be94f20c646b8db4
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Sep 18 00:52:43 2020 +1000

<span style='display:block; white-space:pre;color:#404040;'>    python27: backport upstream fixes for darwin 20
</span>---
 lang/python27/files/darwin20.diff | 178 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 178 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python27/files/darwin20.diff b/lang/python27/files/darwin20.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index a519fd8a472..c3039712423 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/python27/files/darwin20.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python27/files/darwin20.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,3 +1,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://bugs.python.org/issue41100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/python/cpython/pull/21113
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/python/cpython/pull/21241
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/python/cpython/pull/21564
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/python/cpython/pull/21588
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> --- configure.orig        2020-06-29 23:33:10.000000000 +1000
 +++ configure  2020-06-29 23:35:47.000000000 +1000
 @@ -3409,7 +3409,7 @@
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,3 +15,175 @@
</span>      define_xopen_source=no;;
    # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
    # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
<span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/distutils/tests/test_build_ext.py.orig  2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/distutils/tests/test_build_ext.py  2020-09-10 20:59:48.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -491,7 +491,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # format the target value as defined in the Apple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Availability Macros.  We can't use the macro names since
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # at least one value we test with will not exist yet.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if target[1] < 10:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if target[:2] < (10, 10):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # for 10.1 through 10.9.x -> "10n0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             target = '%02d%01d0' % target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/test/test_platform.py.orig 2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/test/test_platform.py      2020-09-10 21:04:05.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -207,6 +207,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             fd.close()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self.assertFalse(real_ver is None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             result_list = res[0].split('.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # macOS 11.0 (Big Sur) may report its version number
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # as 10.16 if the executable is built with an older
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # SDK target but sw_vers reports 11.0.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if result_list == ['10', '16']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                result_list = ['11', '0']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             expect_list = real_ver.split('.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             len_diff = len(result_list) - len(expect_list)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # On Snow Leopard, sw_vers reports 10.6.0 as 10.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/getpath.c.orig 2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/getpath.c      2020-09-10 21:23:10.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,6 +8,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Search in some common locations for the associated Python libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/ctypes/macholib/dyld.py.orig       2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/ctypes/macholib/dyld.py    2020-09-17 23:36:03.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,6 +7,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from dylib import dylib_info
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from itertools import *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    from _ctypes import _dyld_shared_cache_contains_path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    def _dyld_shared_cache_contains_path(*args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        raise NotImplementedError
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __all__ = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'dyld_find', 'framework_find',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'framework_info', 'dylib_info',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,6 +138,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             ), env):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if os.path.isfile(path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if _dyld_shared_cache_contains_path(path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                return path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        except NotImplementedError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            pass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     raise ValueError("dylib %s could not be found" % (name,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def framework_find(fn, executable_path=None, env=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/ctypes/test/test_macholib.py.orig  2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/ctypes/test/test_macholib.py       2020-09-17 23:48:27.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,18 +48,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     @unittest.skipUnless(sys.platform == "darwin", 'OSX-specific test')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def test_find(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self.assertEqual(find_lib('pthread'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                             '/usr/lib/libSystem.B.dylib')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # On macOS 11, system dylibs are only present in the shared cache,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # so symlinks like libpthread.dylib -> libSystem.B.dylib will not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # be resolved by dyld_find
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self.assertIn(find_lib('pthread'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ('/usr/lib/libSystem.B.dylib', '/usr/lib/libpthread.dylib'))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         result = find_lib('z')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Issue #21093: dyld default search path includes $HOME/lib and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # /usr/local/lib before /usr/lib, which caused test failures if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # a local copy of libz exists in one of them. Now ignore the head
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # of the path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self.assertRegexpMatches(result, r".*/lib/libz\..*.*\.dylib")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self.assertRegexpMatches(result, r".*/lib/libz.*\.dylib")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self.assertEqual(find_lib('IOKit'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                             '/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        self.assertIn(find_lib('IOKit'),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ('/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             '/System/Library/Frameworks/IOKit.framework/IOKit'))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if __name__ == "__main__":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unittest.main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/_ctypes/callproc.c.orig        2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/_ctypes/callproc.c     2020-09-18 00:28:54.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +74,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <malloc.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __APPLE__ && HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <ffi.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ctypes.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_ALLOCA_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1416,6 +1420,25 @@ copy_com_pointer(PyObject *self, PyObjec
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __APPLE__ && HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static PyObject *py_dyld_shared_cache_contains_path(PyObject *self, PyObject *args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (__builtin_available(macos 11, ios 14, watchos 7, tvos 14, *)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        char *name_str;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (!PyArg_ParseTuple(args, "z", &name_str))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if(_dyld_shared_cache_contains_path(name_str))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            Py_RETURN_TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            Py_RETURN_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        PyErr_SetString(PyExc_NotImplementedError, "_dyld_shared_cache_contains_path symbol is missing");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static PyObject *py_dl_open(PyObject *self, PyObject *args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char *name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1940,6 +1963,9 @@ PyMethodDef _ctypes_module_methods[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      "dlopen(name, flag={RTLD_GLOBAL|RTLD_LOCAL}) open a shared library"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {"dlclose", py_dl_close, METH_VARARGS, "dlclose a library"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {"dlsym", py_dl_sym, METH_VARARGS, "find symbol in shared library"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __APPLE__ && HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {"_dyld_shared_cache_contains_path", py_dyld_shared_cache_contains_path, METH_VARARGS, "check if path is in the shared cache"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {"alignment", align_func, METH_O, alignment_doc},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {"sizeof", sizeof_func, METH_O, sizeof_doc},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure      2020-09-18 00:34:34.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10596,6 +10596,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ac_fn_c_check_decl "$LINENO" "_dyld_shared_cache_contains_path" "ac_cv_have_decl__dyld_shared_cache_contains_path" "#include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test "x$ac_cv_have_decl__dyld_shared_cache_contains_path" = xyes; then :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++$as_echo "#define HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH 1" >>confdefs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # loading of modules.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pyconfig.h.in.orig     2020-04-20 07:13:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pyconfig.h.in  2020-09-18 00:38:31.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -216,6 +216,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Define to 1 if you have the `dup2' function. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef HAVE_DUP2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Define if you have the '_dyld_shared_cache_contains_path' function. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Defined when any dynamic module loading is enabled. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef HAVE_DYNAMIC_LOADING
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>