<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/ec0ea2729efdcb7a4de329eb67879c851bc3fc9f">https://github.com/macports/macports-ports/commit/ec0ea2729efdcb7a4de329eb67879c851bc3fc9f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ec0ea2729efdcb7a4de329eb67879c851bc3fc9f
</span>Author: Steven Thomas Smith <s.t.smith@ieee.org>
AuthorDate: Sun Jul 17 09:35:00 2022 -0400

<span style='display:block; white-space:pre;color:#404040;'>    py-pytorch: Update to version 1.12.0, Add Python 310
</span>---
 python/py-pytorch/Portfile                         | 31 ++++-----
 .../patch-benchmark-unused_local_variable.diff     | 22 ------
 .../py-pytorch/files/patch-bounds_overlap-h.diff   | 17 +++++
 python/py-pytorch/files/patch-glog-init-check.diff | 78 ++++++++--------------
 4 files changed, 58 insertions(+), 90 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pytorch/Portfile b/python/py-pytorch/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c33b314bb01..cad7ccdb413 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pytorch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pytorch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,8 +7,8 @@ PortGroup           mpi 1.0
</span> PortGroup           python 1.0
 
 name                py-pytorch
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             1.8.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.12.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> github.setup        pytorch pytorch ${version} v
 fetch.type          git
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,20 +19,20 @@ license             BSD
</span> 
 maintainers         nomaintainer
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-description         Tensors and dynamic neural networks in Python\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Tensors and dynamic neural networks in Python \
</span>                     with strong GPU acceleration
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description    PyTorch is a Python package that provides two\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    high-level features: Tensor computation (like\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    NumPy) with strong GPU acceleration\; Deep neural\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    networks built on a tape-based autograd\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    system. You can reuse your favorite Python\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    packages such as NumPy, SciPy and Cython to extend\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    PyTorch is a Python package that provides two \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    high-level features: Tensor computation (like \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    NumPy) with strong GPU acceleration\; Deep neural \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    networks built on a tape-based autograd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    system. You can reuse your favorite Python \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    packages such as NumPy, SciPy and Cython to extend \
</span>                     PyTorch when needed.
 
 homepage            https://pytorch.org/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions     37 38 39
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions     37 38 39 310
</span> 
 patch.pre_args      -p1
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -86,10 +86,6 @@ if {${name} ne ${subport}} {
</span>         port:py${python.version}-typing_extensions \
         port:py${python.version}-yaml
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if { ${python.version} < 37 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib-append  port:py${python.version}-dataclasses
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    
</span>     depends_run-append \
         port:py${python.version}-onnx
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -100,12 +96,11 @@ if {${name} ne ${subport}} {
</span>     # Patch to fix init issue with google-glog 0.5.0, caused by breaking API change.
     # Refer to patch header for detailed background.
     # Upstream PyTorch issue: https://github.com/pytorch/pytorch/issues/58054
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # diff -NaurdwB ./py-pytorch-orig/c10/util/Logging.cpp ./py-pytorch-new/c10/util/Logging.cpp | sed -E -e 's/\.\/py-pytorch-(orig|new)/\.\//' | sed -E -e 's|/opt/local|@@PREFIX@@|g' > ~/Downloads/patch-glog-init-check.diff
</span>     patchfiles-append        patch-glog-init-check.diff
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Patch to fix Clang -Wunused-but-set-variable errors
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # - https://github.com/google/benchmark/issues/1172
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # - https://github.com/google/benchmark/commit/e991355c02b93fe17713efe04cbc2e278e00fdbd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append        patch-benchmark-unused_local_variable.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # diff -NaurdwB ./py-pytorch-orig/torch/csrc/jit/tensorexpr/bounds_overlap.h ./py-pytorch-new/torch/csrc/jit/tensorexpr/bounds_overlap.h | sed -E -e 's/\.\/py-pytorch-(orig|new)/\.\//' | sed -E -e 's|/opt/local|@@PREFIX@@|g' > ~/Downloads/patch-bounds_overlap-h.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append        patch-bounds_overlap-h.diff
</span> 
     # Use Intel Math kernel Library
     if {[variant_isset mkl]} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pytorch/files/patch-benchmark-unused_local_variable.diff b/python/py-pytorch/files/patch-benchmark-unused_local_variable.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 6d964e6f961..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pytorch/files/patch-benchmark-unused_local_variable.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,22 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/third_party/benchmark/src/complexity.cc.orig 2022-04-17 14:24:55.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/third_party/benchmark/src/complexity.cc      2022-04-17 14:23:08.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -77,19 +77,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // http://github.com/ismaelJimenez/Minimal-Cpp-Least-Squared-Fit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- LeastSq MinimalLeastSq(const std::vector<int64_t>& n,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        const std::vector<double>& time,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        BigOFunc* fitting_curve) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  double sigma_gn = 0.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   double sigma_gn_squared = 0.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   double sigma_time = 0.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   double sigma_time_gn = 0.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // Calculate least square fitting parameter
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (size_t i = 0; i < n.size(); ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     double gn_i = fitting_curve(n[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    sigma_gn += gn_i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     sigma_gn_squared += gn_i * gn_i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     sigma_time += time[i];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     sigma_time_gn += time[i] * gn_i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pytorch/files/patch-bounds_overlap-h.diff b/python/py-pytorch/files/patch-bounds_overlap-h.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..812ea3a1a65
</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-pytorch/files/patch-bounds_overlap-h.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- .//torch/csrc/jit/tensorexpr/bounds_overlap.h  2022-07-17 08:18:12.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ .//torch/csrc/jit/tensorexpr/bounds_overlap.h  2022-07-17 08:26:41.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,6 +65,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //     operator
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //     NOT_DETERMINED: Some elements satify the given comparison operator and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //     some elements not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// macOS error: expected identifier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/usr/include/mach/boolean.h:81:17: note: expanded from macro 'TRUE'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ enum CmpEvalResult { TRUE, FALSE, NOT_DETERMINED };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Returns the kind of overlap between Bound A and Bound A in a single
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pytorch/files/patch-glog-init-check.diff b/python/py-pytorch/files/patch-glog-init-check.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 1c9319a2c4d..944c472191f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pytorch/files/patch-glog-init-check.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pytorch/files/patch-glog-init-check.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,57 +9,35 @@
</span> # port.)
 #
 # As for PyTorch, it still relies on the internal namespace, which doesn't
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# work with google-glob 0.5.0. So, patch to utilize public API, until PyTorch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# work with google-glob 0.5.0+. So, patch to utilize public API, until PyTorch
</span> # upstream provides a formal fix.
 #
 # -CNielsen 2022-02-16
 #==============================================================================
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** a/c10/util/Logging.cpp.orig 2022-02-16 11:33:05.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- b/c10/util/Logging.cpp 2022-02-16 11:34:08.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-***************
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 168,194 ****
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  C10_DEFINE_int(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      caffe2_log_level,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      google::GLOG_WARNING,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      "The minimum log level that caffe2 will output.");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Google glog's api does not have an external function that allows one to check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // if glog is initialized or not. It does have an internal function - so we are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // declaring it here. This is a hack but has been used by a bunch of others too
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // (e.g. Torch).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- namespace google {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- namespace glog_internal_namespace_ {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- bool IsGoogleLoggingInitialized();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- } // namespace glog_internal_namespace_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- } // namespace google
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  namespace c10 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  bool InitCaffeLogging(int* argc, char** argv) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (*argc == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #if !defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    // This trick can only be used on UNIX platforms
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!   if (!::google::glog_internal_namespace_::IsGoogleLoggingInitialized())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      ::google::InitGoogleLogging(argv[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #if !defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      // This is never defined on Windows
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 168,184 ----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  C10_DEFINE_int(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      caffe2_log_level,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      google::GLOG_WARNING,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      "The minimum log level that caffe2 will output.");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  namespace c10 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  bool InitCaffeLogging(int* argc, char** argv) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (*argc == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #if !defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    // This trick can only be used on UNIX platforms
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!   if (!::google::IsGoogleLoggingInitialized())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      ::google::InitGoogleLogging(argv[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  #if !defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      // This is never defined on Windows
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- .//c10/util/Logging.cpp        2022-07-17 07:08:04.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ .//c10/util/Logging.cpp        2022-07-17 07:13:34.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -192,23 +192,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     google::GLOG_WARNING,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     "The minimum log level that caffe2 will output.");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// Google glog's api does not have an external function that allows one to check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// if glog is initialized or not. It does have an internal function - so we are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// declaring it here. This is a hack but has been used by a bunch of others too
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// (e.g. Torch).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-namespace google {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-namespace glog_internal_namespace_ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-bool IsGoogleLoggingInitialized();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-} // namespace glog_internal_namespace_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-} // namespace google
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace c10 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void initGoogleLogging(char const* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // This trick can only be used on UNIX platforms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (!::google::glog_internal_namespace_::IsGoogleLoggingInitialized())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (!::google::IsGoogleLoggingInitialized())
</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;'>+     ::google::InitGoogleLogging(name);
</span></pre><pre style='margin:0'>

</pre>