<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ee7c62830ca51ec4aa02b3f1479c390ef3885845">https://github.com/macports/macports-ports/commit/ee7c62830ca51ec4aa02b3f1479c390ef3885845</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 ee7c62830ca TOPCOM: fix build before 10.12
</span>ee7c62830ca is described below

<span style='display:block; white-space:pre;color:#808000;'>commit ee7c62830ca51ec4aa02b3f1479c390ef3885845
</span>Author: Kirill A. Korinsky <kirill@korins.ky>
AuthorDate: Thu Nov 24 02:14:10 2022 +0100

<span style='display:block; white-space:pre;color:#404040;'>    TOPCOM: fix build before 10.12
</span>---
 math/TOPCOM/Portfile                      | 11 +++++-
 math/TOPCOM/files/boost-shared-mutex.diff | 62 +++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/TOPCOM/Portfile b/math/TOPCOM/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 1d6eb6d72ac..436173a1f7b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/math/TOPCOM/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/TOPCOM/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,8 +16,8 @@ description             Triangulations Of Point Configurations and Oriented Matr
</span> long_description        {*}${description}
 
 master_sites            https://www.wm.uni-bayreuth.de/de/team/rambau_joerg/TOPCOM-Downloads/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-distname                ${name}-[string map {. _} ${version}]
</span> extract.suffix          .tgz
<span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles               ${name}-[string map {. _} ${version}]${extract.suffix}
</span> 
 checksums               rmd160  145443b533690b34529475661b58703d5be0011e \
                         sha256  4fb10754ee5b76056441fea98f2c8dee5db6f2984d8c14283b49239ad4378ab6 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -28,6 +28,15 @@ patchfiles              system-cddlib-qso.diff
</span> compiler.cxx_standard   2017
 configure.cxxflags-append -std=c++17
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# error: 'shared_mutex' is unavailable: introduced in macOS 10.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # lucky me I may simple replaces std::shared_mutex to boost::shared_mutex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # anyway, it requires to link against boost_thread-mt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append   boost-shared-mutex.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        -lboost_thread-mt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> use_autoreconf          yes
 autoreconf.args         -fvi
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/TOPCOM/files/boost-shared-mutex.diff b/math/TOPCOM/files/boost-shared-mutex.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..13ff5c2b118
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/TOPCOM/files/boost-shared-mutex.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,62 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git lib-src/PlainHashIndexTable.hh lib-src/PlainHashIndexTable.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 068460d..9dff216 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- lib-src/PlainHashIndexTable.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ lib-src/PlainHashIndexTable.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,8 +15,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <vector>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <mutex>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <shared_mutex>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <boost/thread/mutex.hpp>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <boost/thread/shared_mutex.hpp>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <atomic>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "Global.hh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -55,7 +55,7 @@ namespace topcom {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     index_table_type          _index_data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mutable bool              _preprocessed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mutable bool              _inside_multithreading;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    mutable std::shared_mutex _index_data_mutex; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mutable boost::shared_mutex _index_data_mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // constructors:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     inline PlainHashIndexTable(const bool inside_multithreading = false) :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -91,7 +91,7 @@ namespace topcom {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _preprocessed = phit._preprocessed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  std::unique_lock<std::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::unique_lock<boost::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   key_table_type::operator=(phit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _index_data = phit._index_data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _preprocessed = phit._preprocessed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -117,8 +117,8 @@ namespace topcom {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return _index_data[index];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // std::unique_lock<std::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  std::shared_lock<std::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // std::unique_lock<boost::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  boost::shared_lock<boost::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return _index_data[index];
</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;'>+@@ -142,7 +142,7 @@ namespace topcom {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (_inside_multithreading) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       // std::lock_guard<std::mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      std::unique_lock<std::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      std::unique_lock<boost::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       auto finder(key_table_type::find(key));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (finder != key_table_type::end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return finder->second;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -150,7 +150,7 @@ namespace topcom {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // write access from here - guard:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // std::lock_guard<std::mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    std::unique_lock<std::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::unique_lock<boost::shared_mutex> _index_data_guard(_index_data_mutex);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const size_type new_index(_index_data.size());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     key_table_type::insert(std::pair<Key, size_type>(key, new_index));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // _index_data.resize(new_index + 1);
</span></pre><pre style='margin:0'>

</pre>