<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>