<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/4e9753e65aa494b66355888fa602b4fd08082688">https://github.com/macports/macports-ports/commit/4e9753e65aa494b66355888fa602b4fd08082688</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 4e9753e65aa New port: python312-devel
</span>4e9753e65aa is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 4e9753e65aa494b66355888fa602b4fd08082688
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sun Dec 4 02:53:50 2022 +1100
<span style='display:block; white-space:pre;color:#404040;'> New port: python312-devel
</span>---
lang/python312-devel/Portfile | 257 +++++++++++++++++++++
.../files/configure-disable-tkinter.patch | 11 +
lang/python312-devel/files/patch-Lib-cgi.py.diff | 18 ++
.../files/patch-Lib-ctypes-macholib-dyld.py.diff | 11 +
.../files/patch-configure-xcode4bug.diff | 33 +++
lang/python312-devel/files/patch-configure.diff | 32 +++
.../files/patch-no-copyfile-on-Tiger.diff | 77 ++++++
.../files/patch-threadid-older-systems.diff | 22 ++
lang/python312-devel/files/pyconfig.ed | 2 +
lang/python312-devel/files/pyconfig.h-universal.ed | 71 ++++++
lang/python312-devel/files/python-python312 | 13 ++
lang/python312-devel/files/python3-python312 | 10 +
lang/python312-devel/files/static_assert.patch | 32 +++
lang/python312-devel/files/sysconfig.py.patch | 11 +
14 files changed, 600 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/Portfile b/lang/python312-devel/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1fb255bb655
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,257 @@
</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 select 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name python312-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Remember to keep py312-tkinter and py312-gdbm's versions sync'd with this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 3.12.0a2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set branch [join [lrange [split ${version} .] 0 1] .]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories lang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license PSF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {jmr @jmroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description An interpreted, object-oriented programming language
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description Python is an interpreted, interactive, object-oriented \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ programming language.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://www.python.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#master_sites ${homepage}ftp/python/${version}/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites ${homepage}ftp/python/3.12.0/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname Python-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums md5 100ec555643cef2c0fe3a738bb248403 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 f2b099ffa5fc8a3541925e7bbfba353a516c12e0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 1eafc1384e532cac6432632a77350ef504a114c4235c1f6f2a85f817f5b1926a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles patch-Lib-cgi.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-configure.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-Lib-ctypes-macholib-dyld.py.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-configure-xcode4bug.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sysconfig.py.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static_assert.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure-disable-tkinter.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} <= 10} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # work around no copyfile and/or pthread_threadid_np on older systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-no-copyfile-on-Tiger.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-threadid-older-systems.diff
</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;'>+depends_build port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib port:bzip2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:expat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gettext-runtime \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libedit \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:ncurses \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:lib/libssl.dylib:openssl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:sqlite3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:xz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run port:python_select \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:python3_select
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# ensurepip arg may be removed later, now conflicts with pip and setuptools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# packages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args --enable-framework=${frameworks_dir} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --enable-ipv6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --enable-loadable-sqlite-extensions \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-computed-gotos \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-ensurepip=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-readline=editline \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-system-expat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-system-ffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --with-dbmliborder=ndbm:bdb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ccache no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# pkg-config removes -I flags for paths in CPATH, which confuses python.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SETUPTOOLS_USE_DISTUTILS=stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env SETUPTOOLS_USE_DISTUTILS=stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.env SETUPTOOLS_USE_DISTUTILS=stdlib
</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|@@PREFIX@@|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/Lib/cgi.py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/Lib/ctypes/macholib/dyld.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # replace /Applications with ${applications_dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|@@APPLICATIONS_DIR@@|${applications_dir}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/configure
</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.target all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target frameworkinstall maninstall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pythonNoDot python[string map {. {}} $branch]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+select.entries [list python python-$pythonNoDot $pythonNoDot] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [list python3 python3-$pythonNoDot $pythonNoDot]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set framewpath ${frameworks_dir}/Python.framework
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set framewdir ${framewpath}/Versions/${branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set confdir config-${branch}-darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # poll() misbehaves on 10.8 and older
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # See https://trac.macports.org/ticket/18376
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} <= 12} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} "ed - pyconfig.h < ${filespath}/pyconfig.ed"
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach dir { Headers Resources Python Versions/Current } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete ${destroot}${framewpath}/${dir}
</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;'>+ ln -s ${framewdir}/share/man/man1/python${branch}.1 ${destroot}${prefix}/share/man/man1/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${framewdir}/lib/pkgconfig/python-${branch}.pc ${destroot}${prefix}/lib/pkgconfig/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${framewdir}/lib/pkgconfig/python-${branch}-embed.pc ${destroot}${prefix}/lib/pkgconfig/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set libdir ${destroot}${framewdir}/lib/python${branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Without this, LINKFORSHARED is set to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ... $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # (this becomes Python.framework/Versions/3.12/Python) which doesn't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # work for dependents that incorrectly use this variable to find out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # how to link against python (see ticket #15099); instead we mirror
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the behavior of `python-config --ldflags` here.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lfs_pattern {^([[:space:]]*'LINKFORSHARED':).*}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lfs_replacement "\\1 '-L${framewdir}/lib/python${branch}/${confdir} -lpython${branch} -ldl -framework CoreFoundation',"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E s|${lfs_pattern}|${lfs_replacement}| \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/_sysconfigdata__darwin_darwin.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # remove -arch flags from the config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E {s|-arch [a-z0-9_]+||g} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/_sysconfigdata__darwin_darwin.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # also remove gettext overlinking
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|-lintl||" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/_sysconfigdata__darwin_darwin.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # recompile the modified file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python_for_build python.exe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # executable differs depending on filesystem case sensitivity
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![file exists ${worksrcpath}/${python_for_build}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set python_for_build python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} "env DYLD_FRAMEWORK_PATH=. ./${python_for_build} -E -m compileall -d [shellescape ${framewdir}/lib/python${branch}] -o 0 -o 1 -o 2 [shellescape ${libdir}/_sysconfigdata__darwin_darwin.py]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Also make the sysconfig changes in the Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace {s|^\(LINKFORSHARED=\).*$|\1 -L$(LIBPL) -lpython$(VERSION)$(ABIFLAGS) $(LIBS) $(SYSLIBS)|} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/${confdir}/Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -E {s|-arch [a-z0-9_]+||g} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/${confdir}/Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|-lintl||" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${libdir}/${confdir}/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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach unversioned {2to3 idle3 pydoc3 python3 python3-config} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/bin/${unversioned}
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To make this the default Python or Python 3 (i.e., the version run by\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the 'python' or 'python3' commands), run one or both of:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo port select --set python $pythonNoDot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo port select --set python3 $pythonNoDot
</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;'>+variant universal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set universal_arch_flags {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set arch_run_32bit {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lipo_32bit_flags {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lipo_intel64_flags {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set any64 no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach arch ${configure.universal_archs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend universal_arch_flags -arch ${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${arch} in {i386 ppc}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend arch_run_32bit -${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend lipo_32bit_flags -extract ${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set any64 yes
</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 {$any64} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$arch_run_32bit eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set arch_run_32bit true
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lipo_32bit_flags ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set arch_run_32bit "/usr/bin/arch $arch_run_32bit"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #lipo_32bit_flags already correct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {"arm64" in ${configure.universal_archs} && "x86_64" in ${configure.universal_archs}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lipo_intel64_flags "-extract x86_64"
</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;'>+ set arch_run_32bit ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set lipo_32bit_flags ""
</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|@@UNIVERSAL_ARCH_FLAGS@@|${universal_arch_flags}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|@@LIPO_32BIT_FLAGS@@|${lipo_32bit_flags}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|@@LIPO_INTEL64_FLAGS@@|${lipo_intel64_flags}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "s|@@ARCH_RUN_32BIT@@|${arch_run_32bit}|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-universalsdk=${configure.sysroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ system -W ${worksrcpath} "ed - pyconfig.h < ${filespath}/pyconfig.h-universal.ed"
</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;'>+ post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach unversioned {python3-32 python3-intel64} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete ${destroot}${prefix}/bin/${unversioned}
</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;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant optimizations description {enable expensive, stable optimizations (including PGO)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --enable-optimizations
</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;'>+variant lto description {enable Link-Time Optimization} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --with-lto
</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;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Build failures on 10.9 and older
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} > 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_variants +lto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.major} > 13} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default_variants-append +optimizations
</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;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant dtrace description {enable DTrace support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append --with-dtrace
</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 regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url ${homepage}downloads/source/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#livecheck.regex Python (${branch}\[.0-9\]+) -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex Python (${branch}\[.0-9abrc\]+) -
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/configure-disable-tkinter.patch b/lang/python312-devel/files/configure-disable-tkinter.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f38cb53d40a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/configure-disable-tkinter.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2022-11-14 22:18:11.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure 2022-12-04 02:17:05.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27456,7 +27456,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $as_echo_n "checking for stdlib extension module _tkinter... " >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$py_cv_module__tkinter" != "n/a"; then :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if true; then :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if false; then :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "$have_tcltk" = "yes"; then :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ py_cv_module__tkinter=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/patch-Lib-cgi.py.diff b/lang/python312-devel/files/patch-Lib-cgi.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..133da4eb6cf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-Lib-cgi.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/cgi.py.orig 2006-08-10 19:41:07.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/cgi.py 2007-08-21 15:36:54.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,13 +1,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#! /usr/local/bin/python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#! @@PREFIX@@/bin/python3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# intentionally NOT "/usr/bin/env python". On many systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# scripts, and /usr/local/bin is the default directory where Python is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# installed, so /usr/bin/env would be unable to find python. Granted,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# binary installations by Linux vendors often install Python in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# /usr/bin. So let those vendors patch cgi.py to match their choice
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# of installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# NOTE: /usr/local/bin/python patched for MacPorts installation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """Support module for CGI (Common Gateway Interface) scripts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/patch-Lib-ctypes-macholib-dyld.py.diff b/lang/python312-devel/files/patch-Lib-ctypes-macholib-dyld.py.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4c6d118d687
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-Lib-ctypes-macholib-dyld.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/ctypes/macholib/dyld.py.orig 2019-10-15 00:34:47.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/ctypes/macholib/dyld.py 2019-11-08 19:28:42.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23,7 +23,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEFAULT_LIBRARY_FALLBACK = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ os.path.expanduser("~/lib"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "/usr/local/lib",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "@@PREFIX@@/lib",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "/lib",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "/usr/lib",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/patch-configure-xcode4bug.diff b/lang/python312-devel/files/patch-configure-xcode4bug.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..13a0c96f26c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-configure-xcode4bug.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://trac.macports.org/ticket/49272
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://bugs.python.org/issue24844
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Compiling python fails in Xcode 4 (clang < 3.3) where existence of 'atomic'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+is detected by configure, but it is not fully functional.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2021-01-05 04:26:00.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure 2021-01-07 20:27:22.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17110,6 +17110,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int main() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __atomic_store_n(&val, 1, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (void)__atomic_load_n(&val, __ATOMIC_SEQ_CST);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* https://bugs.python.org/issue24844 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #define VERSION_CHECK(cc_major, cc_minor, req_major, req_minor) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((cc_major) > (req_major) || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (cc_major) == (req_major) && (cc_minor) >= (req_minor))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if defined(__apple_build_version__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // either one test or the other should work
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // #if __apple_build_version__ < 5000000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #if !VERSION_CHECK(__clang_major__, __clang_minor__, 5, 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // not sure if this is 3.3 or 3.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #elif !VERSION_CHECK(__clang_major__, __clang_minor__, 3, 3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ #error
</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;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0;
</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;color:#808080;'>diff --git a/lang/python312-devel/files/patch-configure.diff b/lang/python312-devel/files/patch-configure.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..e0815ab77b8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-configure.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2021-10-05 23:44:05.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure 2021-10-10 03:34:57.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3266,6 +3266,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FRAMEWORKINSTALLAPPSPREFIX="@@APPLICATIONS_DIR@@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Add files for Mac specific code to the list of output
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6574,7 +6576,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # non-suffixed name in their versioned llvm directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ llvm_bin_dir=''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-llvm_path="${PATH}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++llvm_path="/bin:/sbin:/usr/bin:/usr/sbin"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "${CC}" = "clang"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clang_bin=`which clang`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7626,6 +7628,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ UNIVERSAL_ARCH_FLAGS="@@UNIVERSAL_ARCH_FLAGS@@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ LIPO_32BIT_FLAGS="@@LIPO_32BIT_FLAGS@@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ LIPO_INTEL64_FLAGS="@@LIPO_INTEL64_FLAGS@@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ARCH_RUN_32BIT="@@ARCH_RUN_32BIT@@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if test "${UNIVERSALSDK}" != "/"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/patch-no-copyfile-on-Tiger.diff b/lang/python312-devel/files/patch-no-copyfile-on-Tiger.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..811d7169ba1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-no-copyfile-on-Tiger.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,77 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+posix.copyfile does not exist on Tiger.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Python 3.8's posix._fcopyfile implementation unconditionally uses <copyfile.h>,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+which only exists on Leopard ane newer. This patch removes posix._fcopyfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+on Tiger - this is okay because the rest of the stdlib uses posix._fcopyfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+only conditionally after checking that the function exists
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(non-Apple systems don't have posix._fcopyfile either).
</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;'>+thanks to @dgelessus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/macports/macports-ports/pull/5987
</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;'>+diff --git Lib/test/test_shutil.py Lib/test/test_shutil.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e56b337..fdc53e3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/test/test_shutil.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/test/test_shutil.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2451,7 +2451,7 @@ class TestZeroCopySendfile(_ZeroCopyFileTest, unittest.TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ shutil._USE_CP_SENDFILE = True
</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;'>+-@unittest.skipIf(not MACOS, 'macOS only')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++@unittest.skipIf(not MACOS or not hasattr(posix, "_fcopyfile"), 'macOS with posix._fcopyfile only')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class TestZeroCopyMACOS(_ZeroCopyFileTest, unittest.TestCase):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PATCHPOINT = "posix._fcopyfile"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git Modules/clinic/posixmodule.c.h Modules/clinic/posixmodule.c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 41baa45..3965876 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/clinic/posixmodule.c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/clinic/posixmodule.c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5505,7 +5505,7 @@ exit:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* defined(HAVE_SENDFILE) && !defined(__APPLE__) && !(defined(__FreeBSD__) || defined(__DragonFly__)) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PyDoc_STRVAR(os__fcopyfile__doc__,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "_fcopyfile($module, in_fd, out_fd, flags, /)\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Modules/posixmodule.c.orig 2021-12-09 09:24:29.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Modules/posixmodule.c 2021-12-12 04:50:08.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -67,6 +67,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__has_builtin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if __has_builtin(__builtin_available)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define HAVE_BUILTIN_AVAILABLE 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -235,7 +237,7 @@ corresponding Unix manual entries for mo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <sys/sendfile.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 defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <copyfile.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;'>+@@ -10001,7 +10003,7 @@ done:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* HAVE_SENDFILE */
</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 defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*[clinic input]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ os._fcopyfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15415,7 +15417,7 @@ all_ins(PyObject *m)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (PyModule_AddIntMacro(m, EFD_SEMAPHORE)) return -1;
</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 defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (PyModule_AddIntConstant(m, "_COPYFILE_DATA", COPYFILE_DATA)) return -1;
</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;color:#808080;'>diff --git a/lang/python312-devel/files/patch-threadid-older-systems.diff b/lang/python312-devel/files/patch-threadid-older-systems.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f68c2db51f6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/patch-threadid-older-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git Python/thread_pthread.h Python/thread_pthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e6910b3..ff9bb1f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Python/thread_pthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Python/thread_pthread.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -331,7 +331,17 @@ PyThread_get_thread_native_id(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PyThread_init_thread();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint64_t native_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ native_id = pthread_mach_thread_np(pthread_self());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif MAC_OS_X_VERSION_MIN_REQUIRED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (&pthread_threadid_np != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (void) pthread_threadid_np(NULL, &native_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ native_id = pthread_mach_thread_np(pthread_self());
</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;'>+ (void) pthread_threadid_np(NULL, &native_id);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__linux__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pid_t native_id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ native_id = syscall(SYS_gettid);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/pyconfig.ed b/lang/python312-devel/files/pyconfig.ed
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..671d0d56037
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/pyconfig.ed
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,2 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+g,.*\(HAVE_POLL[_A-Z]*\).*,s,,/* #undef \1 */,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+w
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/pyconfig.h-universal.ed b/lang/python312-devel/files/pyconfig.h-universal.ed
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..e1c28309f2c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/pyconfig.h-universal.ed
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,71 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/DOUBLE_IS_BIG_ENDIAN_IEEE754/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __BIG_ENDIAN__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define DOUBLE_IS_BIG_ENDIAN_IEEE754 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* #undef DOUBLE_IS_BIG_ENDIAN_IEEE754 */
</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;'>+/DOUBLE_IS_LITTLE_ENDIAN_IEEE754/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LITTLE_ENDIAN__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* #undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754 */
</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;'>+/HAVE_LARGEFILE_SUPPORT/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* #undef HAVE_LARGEFILE_SUPPORT */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define HAVE_LARGEFILE_SUPPORT 1
</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;'>+/SIZEOF_LONG/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_LONG 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_LONG 4
</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;'>+/SIZEOF_PTHREAD_T/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_PTHREAD_T 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_PTHREAD_T 4
</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;'>+/SIZEOF_SIZE_T/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_SIZE_T 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_SIZE_T 4
</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;'>+/SIZEOF_TIME_T/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_TIME_T 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_TIME_T 4
</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;'>+/SIZEOF_UINTPTR_T/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_UINTPTR_T 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_UINTPTR_T 4
</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;'>+/SIZEOF_VOID_P/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __LP64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_VOID_P 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF_VOID_P 4
</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;'>+/SIZEOF__BOOL/c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if defined(__LP64__) || !defined(__POWERPC__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF__BOOL 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define SIZEOF__BOOL 4
</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;'>+w
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/python-python312 b/lang/python312-devel/files/python-python312
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3e0a8baf967
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/python-python312
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/idle3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/pydoc3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/2to3-3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/python3.12.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${frameworks_dir}/Python.framework/Versions/3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${frameworks_dir}/Python.framework/Versions/3.12/Headers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${frameworks_dir}/Python.framework/Versions/3.12/Resources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${frameworks_dir}/Python.framework/Versions/3.12/Python
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/python3-python312 b/lang/python312-devel/files/python3-python312
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..33f5c80478e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/python3-python312
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/python3.12-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/idle3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/pydoc3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/2to3-3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/python3.12.1
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/python312-devel/files/static_assert.patch b/lang/python312-devel/files/static_assert.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..06d977df40a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/static_assert.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Include/pymacro.h.orig 2022-07-12 01:25:22.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Include/pymacro.h 2022-07-12 12:54:35.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,20 +3,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // gh-91782: On FreeBSD 12, if the _POSIX_C_SOURCE and _XOPEN_SOURCE macros are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // defined, <sys/cdefs.h> disables C11 support and <assert.h> does not define
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// the static_assert() macro. Define the static_assert() macro in Python until
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// <sys/cdefs.h> suports C11:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// the static_assert() macro.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255290
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__FreeBSD__) && !defined(static_assert)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-# define static_assert _Static_assert
</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_assert is defined in glibc from version 2.16. Before it requires
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// compiler support (gcc >= 4.6) and is called _Static_assert.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// macOS <= 10.10 doesn't define static_assert in assert.h at all despite
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// having C11 compiler support.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// static_assert is defined in glibc from version 2.16. Compiler support for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// the C11 _Static_assert keyword is in gcc >= 4.6.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // In C++ 11 static_assert is a keyword, redefining is undefined behaviour.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if (defined(__GLIBC__) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 16)) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && !(defined(__cplusplus) && __cplusplus >= 201103L) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && !defined(static_assert))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(static_assert) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ && !defined(__cplusplus)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # define static_assert _Static_assert
</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;color:#808080;'>diff --git a/lang/python312-devel/files/sysconfig.py.patch b/lang/python312-devel/files/sysconfig.py.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..005390d5a48
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/python312-devel/files/sysconfig.py.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Lib/sysconfig.py.orig 2021-03-02 03:48:59.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Lib/sysconfig.py 2021-03-18 00:19:40.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -429,7 +429,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.write('# system configuration generated and used by'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ' the sysconfig module\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.write('build_time_vars = ')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- pprint.pprint(vars, stream=f)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ pprint.pprint(vars, stream=f, width=4000)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Create file used for sys.path fixup -- see Modules/getpath.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with open('pybuilddir.txt', 'w', encoding='utf8') as f:
</span></pre><pre style='margin:0'>
</pre>