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