<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/76276951b65cf4f5c7ae14ca68f937e611525d78">https://github.com/macports/macports-ports/commit/76276951b65cf4f5c7ae14ca68f937e611525d78</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 76276951b65 py-pyobjc6: port for old systems (#22292)
</span>76276951b65 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 76276951b65cf4f5c7ae14ca68f937e611525d78
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Mon Jan 29 23:34:43 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    py-pyobjc6: port for old systems (#22292)
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    The current version of py-pyobjc is unsupported on old systems.
</span><span style='display:block; white-space:pre;color:#404040;'>    Provide an alternative. Version has been advised by upstream:
</span><span style='display:block; white-space:pre;color:#404040;'>    https://github.com/ronaldoussoren/pyobjc/issues/587
</span>---
 python/py-pyobjc6/Portfile                      | 87 +++++++++++++++++++++++++
 python/py-pyobjc6/files/patch-docs-conf.py.diff | 10 +++
 python/py-pyobjc6/files/patch-install.py.diff   | 20 ++++++
 3 files changed, 117 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyobjc6/Portfile b/python/py-pyobjc6/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8090dedce67
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyobjc6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,87 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Pegged version for old systems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/ronaldoussoren/pyobjc/issues/587
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        ronaldoussoren pyobjc 6.2.2 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  7387bc8c6ec744ca2cf6328036dde9826bcb2763 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  0730edcdc5ca0bbc1e10983d3a7ef143ea80dfec9db8b02eb81d64e4fc18635f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    13008288
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                py-pyobjc6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories-append   devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           {darwin < 11}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Bidirectional bridge between Python and Objective C
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    The PyObjC project aims to provide a bridge between \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    the Python and Objective-C programming languages. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    The bridge is intended to be fully bidirectional, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    allowing the Python programmer to take full advantage \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    of the power provided by various Objective-C-based \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    toolkits and the Objective-C programmer transparent \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    access to Python based functionality.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://pyobjc.readthedocs.io
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# It fails to build with Python 3.11+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions     36 37 38 39 310
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${name} ne ${subport}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-setuptools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build   port:py${python.version}-sphinx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # The patches below suppress cleaning on incremental builds,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # as MacPorts handles that itself, and disable a Sphinx extension
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # not present in MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-docs-conf.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-install.py.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace "s|use-system-libffi = 0|\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use-system-libffi = 1\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+deployment-target = ${macosx_deployment_target}\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+|" ${worksrcpath}/pyobjc-core/setup.cfg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "s/sphinx-build /sphinx-build-${python.branch} /g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/docs/Makefile
</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;'>+    if {${configure.sdkroot} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set sdkroot "/"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set sdkroot ${configure.sdkroot}
</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;'>+    build.env-append    SDKROOT=${sdkroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.env-append SDKROOT=${sdkroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # The pyobjc build system is vaguely horrible,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # so do everything in the destroot target.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath}/docs "make html"
</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;'>+    # Don't pass --no-user-cfg, as the build system subclasses
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # the install command from distutils, not setuptools;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # in fact, doing so breaks the build...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.cmd "${python.bin} install.py"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 644 -W ${worksrcpath}/pyobjc-core HISTORIC.txt Install.txt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            License.txt README.txt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/share/doc/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        copy ${worksrcpath}/docs/_build/html ${destroot}${prefix}/share/doc/${subport}/html
</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;'>+    livecheck.type  none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyobjc6/files/patch-docs-conf.py.diff b/python/py-pyobjc6/files/patch-docs-conf.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..6041bcab5ec
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyobjc6/files/patch-docs-conf.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- docs/conf.py.orig      2020-04-01 07:47:09.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ docs/conf.py   2020-04-01 07:47:25.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +34,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "sphinx.ext.ifconfig",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "sphinx.ext.extlinks",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "examples",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    "sphinx_sitemap",
</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;'>+ extlinks = {"issue": ("https://github.com/ronaldoussoren/pyobjc/issues/%s", "issue ")}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pyobjc6/files/patch-install.py.diff b/python/py-pyobjc6/files/patch-install.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c76b35e6eed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pyobjc6/files/patch-install.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- install.py.orig        2020-03-25 12:26:08.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ install.py     2020-04-01 07:49:00.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -187,17 +187,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def build_project(project, extra_args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     proj_dir = os.path.join(TOPDIR, project)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    # First ask distutils to clean up
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    print("Cleaning {!r} using {!r}".format(project, sys.executable))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    status = subprocess.call([sys.executable, "setup.py", "clean"], cwd=proj_dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if status != 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        print("Cleaning of {!r} failed, status {}".format(project, status))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return False
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    # Explicitly remove the 'build' directory, just in case...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if os.path.exists(os.path.join(proj_dir, "build")):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        shutil.rmtree(os.path.join(proj_dir, "build"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     print("Installing {!r} using {!r}".format(project, sys.executable))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     status = subprocess.call(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         [sys.executable, "setup.py", "install"] + extra_args, cwd=proj_dir
</span></pre><pre style='margin:0'>

</pre>