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