<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/cc9d6aaecedf726b724becac4b1cd8a390e54b64">https://github.com/macports/macports-ports/commit/cc9d6aaecedf726b724becac4b1cd8a390e54b64</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit cc9d6aaecedf726b724becac4b1cd8a390e54b64
</span>Author: Kirill A. Korinsky <kirill@korins.ky>
AuthorDate: Sat Dec 3 23:04:22 2022 +0100
<span style='display:block; white-space:pre;color:#404040;'> usd: default +python311
</span>---
graphics/usd/Portfile | 19 ++++++--
.../usd/files/patch-python3.11-compatibility.diff | 50 ++++++++++++++++++++++
2 files changed, 65 insertions(+), 4 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/usd/Portfile b/graphics/usd/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 95c6f619d95..16768164390 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/usd/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/usd/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -34,7 +34,7 @@ checksums rmd160 8ec6dda307f9804ce4b3a562c3df2dbd14a64390 \
</span> sha256 ad167b438401848fdd4133f4470a6288ccf37949b4ccc9abf52b50438380ec59 \
size 24800580
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set py_ver 3.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set py_ver 3.11
</span> set py_ver_nodot [string map {. {}} ${py_ver}]
set py_ver_major [lindex [split $py_ver .] 0]
set py_ver_minor [lindex [split $py_ver .] 1]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -50,9 +50,17 @@ conflicts spidermonkey
</span> depends_lib-append port:tbb
compiler.cxx_standard 2014
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# USD fails to compile for Clang older than 8.1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# (Note: Clang 8.1.0 == clang-802 in Xcode)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append {clang < 802}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# enforce to using the same compiler that is used for MaterialX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set llvm_version 14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# pin the used version for LLVM before 10.13 to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# which is forced by used version of osl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 18} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set llvm_version 11
</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;'>+compiler.blacklist-append clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.fallback macports-clang-${llvm_version}
</span>
# This patch adds modifications that allow Blender to use USD. The patch
# file 'patch-add-blender-mods.diff' was extracted from the file in
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,6 +77,9 @@ patchfiles-append patch-add-blender-mods.diff
</span> # conforms with MacPorts' mtree layout: ${prefix}/share/usd/plugins
patchfiles-append patch-plugins-output-paths.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# A trivial patch to fix support Python 3.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-python3.11-compatibility.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-patch {
# USD puts its CMake package config files in the wrong place
reinplace {s|cmake/||} ${worksrcpath}/pxr/pxrConfig.cmake.in
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/usd/files/patch-python3.11-compatibility.diff b/graphics/usd/files/patch-python3.11-compatibility.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..973504d1896
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/usd/files/patch-python3.11-compatibility.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,50 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://github.com/PixarAnimationStudios/USD/pull/1928
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git pxr/base/tf/pyTracing.cpp pxr/base/tf/pyTracing.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 62262d7d75..4b201744fa 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pxr/base/tf/pyTracing.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pxr/base/tf/pyTracing.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,8 +35,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <tbb/spin_mutex.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// This is from python, needed for PyFrameObject.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// These are from python, needed for PyFrameObject.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <frameobject.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <patchlevel.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <list>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mutex>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -105,16 +106,29 @@ static void _SetTraceFnEnabled(bool enable) {
</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;'>++#if PY_VERSION_HEX < 0x030900B1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Define PyFrame_GetCode() on Python 3.8 and older:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// https://docs.python.org/3.11/whatsnew/3.11.html#id6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Py_INCREF(frame->f_code);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return frame->f_code;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int _TracePythonFn(PyObject *, PyFrameObject *frame,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int what, PyObject *arg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Build up a trace info struct.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TfPyTraceInfo info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PyCodeObject * code = PyFrame_GetCode(frame);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ info.arg = arg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- info.funcName = TfPyString_AsString(frame->f_code->co_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- info.fileName = TfPyString_AsString(frame->f_code->co_filename);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- info.funcLine = frame->f_code->co_firstlineno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ info.funcName = TfPyString_AsString(code->co_name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ info.fileName = TfPyString_AsString(code->co_filename);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ info.funcLine = code->co_firstlineno;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ info.what = what;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Py_DECREF(code);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _InvokeTraceFns(info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>
</pre>