<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/42bbe0b030891f2c39fc8df4c7e510e95de4ea19">https://github.com/macports/macports-ports/commit/42bbe0b030891f2c39fc8df4c7e510e95de4ea19</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 42bbe0b0308 s2geometry: new port in math
</span>42bbe0b0308 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 42bbe0b030891f2c39fc8df4c7e510e95de4ea19
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Mon May 22 05:22:07 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    s2geometry: new port in math
</span>---
 math/s2geometry/Portfile                       | 59 ++++++++++++++++++++++++++
 math/s2geometry/files/patch-fix-build.diff     | 34 +++++++++++++++
 math/s2geometry/files/patch-ppc-constexpr.diff | 32 ++++++++++++++
 3 files changed, 125 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/s2geometry/Portfile b/math/s2geometry/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..66c764dd480
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/s2geometry/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,59 @@
</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           active_variants 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           openssl 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        google s2geometry 7773d518b1f29caa1c2045eb66ec519e025be108
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             0.10.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          math science
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             Apache-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Computational geometry and spatial indexing on the sphere
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://s2geometry.io
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  f4d412b134d0879a7bd2284f571b3f64066b1a1a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  36998cb5fd5309c4d42008591ce7946a53cef8dffb25a04c09673ac616ac9820 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    1179957
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:abseil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/google/s2geometry/issues/315
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-fix-build.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The following is correct, i.e. not only for Darwin:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform powerpc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-ppc-constexpr.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;'>+# C++ standard should match that of abseil port:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard   2014
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DBUILD_SHARED_LIBS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DBUILD_EXAMPLES=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -latomic
</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;'>+# FIXME: Big-endian platforms are partly supported.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# A number of tests fail on ppc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/google/s2geometry/issues/316
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant tests description "Enable testing" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gtest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    require_active_variants gtest shared_libs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DGOOGLETEST_ROOT=${prefix}/src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.env-append DYLD_LIBRARY_PATH=${cmake.build_dir}:${prefix}/lib
</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;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/s2geometry/files/patch-fix-build.diff b/math/s2geometry/files/patch-fix-build.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7d10f233d8b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/s2geometry/files/patch-fix-build.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/s2/util/endian/endian.h    2023-05-14 04:29:12.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/s2/util/endian/endian.h    2023-05-18 14:18:31.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -768,6 +768,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Load/Store for bool. Sanitizes bool on the way in for safety.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !(defined(__MACH__) && defined(__ppc__))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template<>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ inline bool LittleEndian::Load<bool>(const char* p) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(sizeof(bool) == 1, "Unexpected sizeof(bool)");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -791,6 +792,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   static_assert(sizeof(bool) == 1, "Unexpected sizeof(bool)");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   *p = value ? 1 : 0;
</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;'>+ // Load/Store for float.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/s2/value_lexicon.h.orig    2023-05-19 00:29:56.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/s2/value_lexicon.h 2023-05-19 00:30:08.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,12 +29,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "s2/util/gtl/dense_hash_set.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class S2Point;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-namespace absl {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-namespace hash_internal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-template <typename T>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-struct Hash;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}  // namespace hash_internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}  // namespace absl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // ValueLexicon is a class that maps distinct values to sequentially numbered
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // integer identifiers.  It automatically eliminates duplicates and uses a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/s2geometry/files/patch-ppc-constexpr.diff b/math/s2geometry/files/patch-ppc-constexpr.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0dd4b4ea098
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/s2geometry/files/patch-ppc-constexpr.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;'>+--- src/s2/s2edge_crossings.cc.orig        2023-04-28 23:28:39.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/s2/s2edge_crossings.cc     2023-05-18 18:05:32.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -116,7 +116,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // "a" and "b" are closer than about 18 * DBL_ERR == 9 * DBL_EPSILON.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // (80-bit precision can handle inputs as close as 2.5 * LDBL_EPSILON.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   constexpr T T_ERR = rounding_epsilon<T>();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  constexpr T kMinNorm =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const T kMinNorm =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       (32 * kSqrt3 * DBL_ERR) /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       (kRobustCrossProdError.radians() / T_ERR - (1 + 2 * kSqrt3));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -459,7 +459,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   constexpr T T_ERR = rounding_epsilon<T>();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   constexpr T kMinNormalLength = (16 * kSqrt3 + 24) * DBL_ERR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  constexpr T kMinResultLen =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const T kMinResultLen =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       12 / (kIntersectionError.radians() / T_ERR - (2 + 2 * kSqrt3));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // On some platforms "long double" is the same as "double", and on these
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/s2/s2predicates.cc.orig    2023-04-28 23:28:39.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/s2/s2predicates.cc 2023-05-19 01:05:41.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -932,7 +932,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Reference:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   //   Error Estimation Of Floating-Point Summation And Dot Product, Rump
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   //   2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  constexpr T kMaxError = 3.046875 * std::numeric_limits<T>::epsilon();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const T kMaxError = 3.046875 * std::numeric_limits<T>::epsilon();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   T na = a.DotProd(b);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (std::fabs(na) <= kMaxError) return 0;
</span></pre><pre style='margin:0'>

</pre>