<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/015c8b563a97fc5c55c4aeb964c45f36659a7898">https://github.com/macports/macports-ports/commit/015c8b563a97fc5c55c4aeb964c45f36659a7898</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 015c8b563a9 mapnik: fix location of python binary
</span>015c8b563a9 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 015c8b563a97fc5c55c4aeb964c45f36659a7898
</span>Author: Frank Dean <frankdean@users.noreply.github.com>
AuthorDate: Mon May 22 11:08:39 2023 +0100

<span style='display:block; white-space:pre;color:#404040;'>    mapnik: fix location of python binary
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Fix to build with Python 3
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Applied patch from:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    https://github.com/mapnik/mapnik/commit/7da9009e7ffffb0b9429890f6f13fee837ac320f
</span>---
 gis/mapnik/Portfile                             |  12 ++-
 gis/mapnik/files/patch-scons-action.py.diff     |  19 +++++
 gis/mapnik/files/patch-scons-tool-javac.py.diff |  19 +++++
 gis/mapnik/files/patch-scons-util.py.diff       | 102 ++++++++++++++++++++++++
 4 files changed, 150 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/Portfile b/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a196181a724..70db24a3491 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -42,8 +42,16 @@ checksums           rmd160  ddd58a419aa6f7cf537e40ae10d369be423f18b2 \
</span> # `mod_tile` `revision` attribute.
 boost.version       1.76
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_branch       3.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_version      [string map {. {}} ${python_branch}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-scons-action.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-scons-tool-javac.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-scons-util.py.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> depends_build-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:python${python_version}
</span> 
 depends_lib-append  path:lib/pkgconfig/harfbuzz.pc:harfbuzz \
                     path:lib/pkgconfig/icu-uc.pc:icu \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,7 +106,7 @@ universal_variant   no
</span> 
 configure.pkg_config ${prefix}/bin/pkg-config
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.python    /usr/bin/python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python        ${prefix}/bin/python${python_branch}
</span> 
 build.cmd           ${configure.python} scons/scons.py
 build.pre_args
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-action.py.diff b/gis/mapnik/files/patch-scons-action.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a0b1ededcc8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/mapnik/files/patch-scons-action.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- scons/scons-local-3.0.1/SCons/Action.py.orig   2023-11-15 16:08:13.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ scons/scons-local-3.0.1/SCons/Action.py        2023-11-15 16:09:58.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -107,6 +107,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import subprocess
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import itertools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import inspect
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import SCons.Debug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from SCons.Debug import logInstanceCreation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1289,7 +1290,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return result
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def get_varlist(self, target, source, env, executor=None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        result = SCons.Util.OrderedDict()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        result = OrderedDict()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for act in self.list:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for var in act.get_varlist(target, source, env, executor):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 result[var] = True
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-tool-javac.py.diff b/gis/mapnik/files/patch-scons-tool-javac.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..14701ac6b84
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/mapnik/files/patch-scons-tool-javac.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- scons/scons-local-3.0.1/SCons/Tool/javac.py.orig       2023-11-15 16:08:31.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ scons/scons-local-3.0.1/SCons/Tool/javac.py    2023-11-15 16:10:14.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import os.path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import SCons.Action
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import SCons.Builder
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -70,7 +71,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if isinstance(entry, SCons.Node.FS.File):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             slist.append(entry)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         elif isinstance(entry, SCons.Node.FS.Dir):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            result = SCons.Util.OrderedDict()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            result = OrderedDict()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             dirnode = entry.rdir()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             def find_java_files(arg, dirpath, filenames):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 java_files = sorted([n for n in filenames
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-util.py.diff b/gis/mapnik/files/patch-scons-util.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f959b5b7f49
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/mapnik/files/patch-scons-util.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,102 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- scons/scons-local-3.0.1/SCons/Util.py.orig     2023-11-15 16:08:41.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ scons/scons-local-3.0.1/SCons/Util.py  2023-11-15 16:10:05.000000000 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,21 +37,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PY3 = sys.version_info[0] == 3
</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 collections import UserDict, UserList, UserString
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from UserDict import UserDict
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-except ImportError as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    from collections import UserDict
</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 UserList import UserList
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-except ImportError as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    from collections import UserList
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from collections import Iterable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    from UserString import UserString
</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 UserString import UserString
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-except ImportError as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    from collections import UserString
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    from collections.abc import Iterable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++except ImportError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    from collections import Iterable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Don't "from types import ..." these because we need to get at the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # types module later to look for UnicodeType.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -63,7 +60,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FunctionType    = types.FunctionType
</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;'>+-    unicode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _ = type(unicode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ except NameError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     UnicodeType = str
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1034,60 +1031,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def __str__(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return ' '.join(self.data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# A dictionary that preserves the order in which items are added.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# Submitted by David Benjamin to ActiveState's Python Cookbook web site:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#     http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# Including fixes/enhancements from the follow-on discussions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-class OrderedDict(UserDict):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def __init__(self, dict = None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self._keys = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        UserDict.__init__(self, dict)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def __delitem__(self, key):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        UserDict.__delitem__(self, key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self._keys.remove(key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def __setitem__(self, key, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        UserDict.__setitem__(self, key, item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if key not in self._keys: self._keys.append(key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def clear(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        UserDict.clear(self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        self._keys = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def copy(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        dict = OrderedDict()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        dict.update(self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return dict
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def items(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return list(zip(self._keys, list(self.values())))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def keys(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return self._keys[:]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def popitem(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            key = self._keys[-1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        except IndexError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            raise KeyError('dictionary is empty')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        val = self[key]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        del self[key]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return (key, val)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def setdefault(self, key, failobj = None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        UserDict.setdefault(self, key, failobj)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if key not in self._keys: self._keys.append(key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def update(self, dict):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for (key, val) in dict.items():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            self.__setitem__(key, val)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def values(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return list(map(self.get, self._keys))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class Selector(OrderedDict):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """A callable ordered dictionary that maps file suffixes to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     dictionary values.  We preserve the order in which items are added
</span></pre><pre style='margin:0'>

</pre>