mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 01:26:39 -04:00
net-mgmt/icinga2: Update to 2.14.5
Unbreak with boost >= 1.87 Obtained from: https://github.com/Icinga/icinga2/pull/10278
This commit is contained in:
parent
b05ad41721
commit
5ca648dbf4
4 changed files with 347 additions and 9 deletions
|
@ -1,7 +1,6 @@
|
||||||
PORTNAME= icinga2
|
PORTNAME= icinga2
|
||||||
DISTVERSIONPREFIX= v
|
DISTVERSIONPREFIX= v
|
||||||
DISTVERSION= 2.14.3
|
DISTVERSION= 2.14.5
|
||||||
PORTREVISION= 1
|
|
||||||
CATEGORIES= net-mgmt
|
CATEGORIES= net-mgmt
|
||||||
|
|
||||||
MAINTAINER= flo@FreeBSD.org
|
MAINTAINER= flo@FreeBSD.org
|
||||||
|
@ -11,8 +10,6 @@ WWW= https://www.icinga.org/icinga2/
|
||||||
LICENSE= GPLv2
|
LICENSE= GPLv2
|
||||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||||
|
|
||||||
BROKEN= fails to build with Boost>=1.87
|
|
||||||
|
|
||||||
LIB_DEPENDS= libboost_system.so:devel/boost-libs
|
LIB_DEPENDS= libboost_system.so:devel/boost-libs
|
||||||
RUN_DEPENDS= ${LOCALBASE}/bin/bash:shells/bash
|
RUN_DEPENDS= ${LOCALBASE}/bin/bash:shells/bash
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
TIMESTAMP = 1731438143
|
TIMESTAMP = 1739700506
|
||||||
SHA256 (icinga-icinga2-v2.14.3_GH0.tar.gz) = 8cde20f8d8f66228fd66b4b4cef0deb0e60cf8d2a0ddc94c4cf54df5bec7db33
|
SHA256 (icinga-icinga2-v2.14.5_GH0.tar.gz) = 9ab744de272ce17a871298116bd8029400a08563664f07ad1e52d2fa73d6929f
|
||||||
SIZE (icinga-icinga2-v2.14.3_GH0.tar.gz) = 9397891
|
SIZE (icinga-icinga2-v2.14.5_GH0.tar.gz) = 9413390
|
||||||
|
|
341
net-mgmt/icinga2/files/patch-boost-1.87.diff
Normal file
341
net-mgmt/icinga2/files/patch-boost-1.87.diff
Normal file
|
@ -0,0 +1,341 @@
|
||||||
|
diff --git a/lib/base/io-engine.hpp b/lib/base/io-engine.hpp
|
||||||
|
index 55a06fb6a6..37ba434761 100644
|
||||||
|
--- lib/base/io-engine.hpp
|
||||||
|
+++ lib/base/io-engine.hpp
|
||||||
|
@@ -16,11 +16,16 @@
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
#include <stdexcept>
|
||||||
|
+#include <boost/context/fixedsize_stack.hpp>
|
||||||
|
#include <boost/exception/all.hpp>
|
||||||
|
#include <boost/asio/deadline_timer.hpp>
|
||||||
|
#include <boost/asio/io_context.hpp>
|
||||||
|
#include <boost/asio/spawn.hpp>
|
||||||
|
|
||||||
|
+#if BOOST_VERSION >= 108000
|
||||||
|
+# include <boost/asio/detached.hpp>
|
||||||
|
+#endif // BOOST_VERSION >= 108000
|
||||||
|
+
|
||||||
|
namespace icinga
|
||||||
|
{
|
||||||
|
|
||||||
|
@@ -102,6 +107,10 @@ class IoEngine
|
||||||
|
static void SpawnCoroutine(Handler& h, Function f) {
|
||||||
|
|
||||||
|
boost::asio::spawn(h,
|
||||||
|
+#if BOOST_VERSION >= 108000
|
||||||
|
+ std::allocator_arg_t(),
|
||||||
|
+ boost::context::fixedsize_stack(GetCoroutineStackSize()),
|
||||||
|
+#endif // BOOST_VERSION >= 108000
|
||||||
|
[f](boost::asio::yield_context yc) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
@@ -119,7 +128,11 @@ class IoEngine
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
+#if BOOST_VERSION >= 108000
|
||||||
|
+ boost::asio::detached
|
||||||
|
+#else // BOOST_VERSION >= 108000
|
||||||
|
boost::coroutines::attributes(GetCoroutineStackSize()) // Set a pre-defined stack size.
|
||||||
|
+#endif // BOOST_VERSION >= 108000
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/test/base-io-engine.cpp b/test/base-io-engine.cpp
|
||||||
|
index 869688b1a6..3a251b1b42 100644
|
||||||
|
--- test/base-io-engine.cpp
|
||||||
|
+++ test/base-io-engine.cpp
|
||||||
|
@@ -17,7 +17,7 @@ BOOST_AUTO_TEST_CASE(timeout_run)
|
||||||
|
boost::asio::io_context::strand strand (io);
|
||||||
|
int called = 0;
|
||||||
|
|
||||||
|
- boost::asio::spawn(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
+ IoEngine::SpawnCoroutine(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
boost::asio::deadline_timer timer (io);
|
||||||
|
|
||||||
|
Timeout timeout (strand, boost::posix_time::millisec(300), [&called] { ++called; });
|
||||||
|
@@ -44,7 +44,7 @@ BOOST_AUTO_TEST_CASE(timeout_cancelled)
|
||||||
|
boost::asio::io_context::strand strand (io);
|
||||||
|
int called = 0;
|
||||||
|
|
||||||
|
- boost::asio::spawn(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
+ IoEngine::SpawnCoroutine(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
boost::asio::deadline_timer timer (io);
|
||||||
|
Timeout timeout (strand, boost::posix_time::millisec(300), [&called] { ++called; });
|
||||||
|
|
||||||
|
@@ -71,7 +71,7 @@ BOOST_AUTO_TEST_CASE(timeout_scope)
|
||||||
|
boost::asio::io_context::strand strand (io);
|
||||||
|
int called = 0;
|
||||||
|
|
||||||
|
- boost::asio::spawn(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
+ IoEngine::SpawnCoroutine(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
boost::asio::deadline_timer timer (io);
|
||||||
|
|
||||||
|
{
|
||||||
|
@@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE(timeout_due_cancelled)
|
||||||
|
boost::asio::io_context::strand strand (io);
|
||||||
|
int called = 0;
|
||||||
|
|
||||||
|
- boost::asio::spawn(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
+ IoEngine::SpawnCoroutine(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
boost::asio::deadline_timer timer (io);
|
||||||
|
Timeout timeout (strand, boost::posix_time::millisec(300), [&called] { ++called; });
|
||||||
|
|
||||||
|
@@ -131,7 +131,7 @@ BOOST_AUTO_TEST_CASE(timeout_due_scope)
|
||||||
|
boost::asio::io_context::strand strand (io);
|
||||||
|
int called = 0;
|
||||||
|
|
||||||
|
- boost::asio::spawn(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
+ IoEngine::SpawnCoroutine(strand, [&](boost::asio::yield_context yc) {
|
||||||
|
boost::asio::deadline_timer timer (io);
|
||||||
|
|
||||||
|
{
|
||||||
|
diff --git a/lib/base/io-engine.hpp b/lib/base/io-engine.hpp
|
||||||
|
index 0350d45b83..55a06fb6a6 100644
|
||||||
|
--- lib/base/io-engine.hpp
|
||||||
|
+++ lib/base/io-engine.hpp
|
||||||
|
@@ -106,14 +106,17 @@ class IoEngine
|
||||||
|
|
||||||
|
try {
|
||||||
|
f(yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind &) {
|
||||||
|
- // Required for proper stack unwinding when coroutines are destroyed.
|
||||||
|
- // https://github.com/boostorg/coroutine/issues/39
|
||||||
|
- throw;
|
||||||
|
} catch (const std::exception& ex) {
|
||||||
|
Log(LogCritical, "IoEngine") << "Exception in coroutine: " << DiagnosticInformation(ex);
|
||||||
|
} catch (...) {
|
||||||
|
- Log(LogCritical, "IoEngine", "Exception in coroutine!");
|
||||||
|
+ try {
|
||||||
|
+ Log(LogCritical, "IoEngine", "Exception in coroutine!");
|
||||||
|
+ } catch (...) {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // Required for proper stack unwinding when coroutines are destroyed.
|
||||||
|
+ // https://github.com/boostorg/coroutine/issues/39
|
||||||
|
+ throw;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
boost::coroutines::attributes(GetCoroutineStackSize()) // Set a pre-defined stack size.
|
||||||
|
diff --git a/lib/icingadb/redisconnection.cpp b/lib/icingadb/redisconnection.cpp
|
||||||
|
index a6b82187dd..c1f73f5a0e 100644
|
||||||
|
--- lib/icingadb/redisconnection.cpp
|
||||||
|
+++ lib/icingadb/redisconnection.cpp
|
||||||
|
@@ -377,8 +377,6 @@ void RedisConnection::Connect(asio::yield_context& yc)
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
} catch (const std::exception& ex) {
|
||||||
|
Log(LogCritical, "IcingaDB")
|
||||||
|
<< "Cannot connect to " << m_Host << ":" << m_Port << ": " << ex.what();
|
||||||
|
@@ -408,17 +406,10 @@ void RedisConnection::ReadLoop(asio::yield_context& yc)
|
||||||
|
for (auto i (item.Amount); i; --i) {
|
||||||
|
ReadOne(yc);
|
||||||
|
}
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
} catch (const std::exception& ex) {
|
||||||
|
Log(LogCritical, "IcingaDB")
|
||||||
|
<< "Error during receiving the response to a query which has been fired and forgotten: " << ex.what();
|
||||||
|
|
||||||
|
- continue;
|
||||||
|
- } catch (...) {
|
||||||
|
- Log(LogCritical, "IcingaDB")
|
||||||
|
- << "Error during receiving the response to a query which has been fired and forgotten";
|
||||||
|
-
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -432,9 +423,7 @@ void RedisConnection::ReadLoop(asio::yield_context& yc)
|
||||||
|
|
||||||
|
try {
|
||||||
|
reply = ReadOne(yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
promise.set_exception(std::current_exception());
|
||||||
|
|
||||||
|
continue;
|
||||||
|
@@ -455,9 +444,7 @@ void RedisConnection::ReadLoop(asio::yield_context& yc)
|
||||||
|
for (auto i (item.Amount); i; --i) {
|
||||||
|
try {
|
||||||
|
replies.emplace_back(ReadOne(yc));
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
promise.set_exception(std::current_exception());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -551,19 +538,11 @@ void RedisConnection::WriteItem(boost::asio::yield_context& yc, RedisConnection:
|
||||||
|
|
||||||
|
try {
|
||||||
|
WriteOne(item, yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
} catch (const std::exception& ex) {
|
||||||
|
Log msg (LogCritical, "IcingaDB", "Error during sending query");
|
||||||
|
LogQuery(item, msg);
|
||||||
|
msg << " which has been fired and forgotten: " << ex.what();
|
||||||
|
|
||||||
|
- return;
|
||||||
|
- } catch (...) {
|
||||||
|
- Log msg (LogCritical, "IcingaDB", "Error during sending query");
|
||||||
|
- LogQuery(item, msg);
|
||||||
|
- msg << " which has been fired and forgotten";
|
||||||
|
-
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -587,19 +566,11 @@ void RedisConnection::WriteItem(boost::asio::yield_context& yc, RedisConnection:
|
||||||
|
WriteOne(query, yc);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
} catch (const std::exception& ex) {
|
||||||
|
Log msg (LogCritical, "IcingaDB", "Error during sending query");
|
||||||
|
LogQuery(item[i], msg);
|
||||||
|
msg << " which has been fired and forgotten: " << ex.what();
|
||||||
|
|
||||||
|
- return;
|
||||||
|
- } catch (...) {
|
||||||
|
- Log msg (LogCritical, "IcingaDB", "Error during sending query");
|
||||||
|
- LogQuery(item[i], msg);
|
||||||
|
- msg << " which has been fired and forgotten";
|
||||||
|
-
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -618,9 +589,7 @@ void RedisConnection::WriteItem(boost::asio::yield_context& yc, RedisConnection:
|
||||||
|
|
||||||
|
try {
|
||||||
|
WriteOne(item.first, yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
item.second.set_exception(std::current_exception());
|
||||||
|
|
||||||
|
return;
|
||||||
|
@@ -645,9 +614,7 @@ void RedisConnection::WriteItem(boost::asio::yield_context& yc, RedisConnection:
|
||||||
|
for (auto& query : item.first) {
|
||||||
|
WriteOne(query, yc);
|
||||||
|
}
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
item.second.set_exception(std::current_exception());
|
||||||
|
|
||||||
|
return;
|
||||||
|
diff --git a/lib/icingadb/redisconnection.hpp b/lib/icingadb/redisconnection.hpp
|
||||||
|
index 3f963f3d37..2386a1e36e 100644
|
||||||
|
--- lib/icingadb/redisconnection.hpp
|
||||||
|
+++ lib/icingadb/redisconnection.hpp
|
||||||
|
@@ -389,9 +389,7 @@ RedisConnection::Reply RedisConnection::ReadOne(StreamPtr& stream, boost::asio::
|
||||||
|
|
||||||
|
try {
|
||||||
|
return ReadRESP(*strm, yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
if (m_Connecting.exchange(false)) {
|
||||||
|
m_Connected.store(false);
|
||||||
|
stream = nullptr;
|
||||||
|
@@ -403,6 +401,8 @@ RedisConnection::Reply RedisConnection::ReadOne(StreamPtr& stream, boost::asio::
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ throw;
|
||||||
|
+ } catch (...) {
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -427,9 +427,7 @@ void RedisConnection::WriteOne(StreamPtr& stream, RedisConnection::Query& query,
|
||||||
|
try {
|
||||||
|
WriteRESP(*strm, query, yc);
|
||||||
|
strm->async_flush(yc);
|
||||||
|
- } catch (const boost::coroutines::detail::forced_unwind&) {
|
||||||
|
- throw;
|
||||||
|
- } catch (...) {
|
||||||
|
+ } catch (const std::exception&) {
|
||||||
|
if (m_Connecting.exchange(false)) {
|
||||||
|
m_Connected.store(false);
|
||||||
|
stream = nullptr;
|
||||||
|
@@ -441,6 +439,8 @@ void RedisConnection::WriteOne(StreamPtr& stream, RedisConnection::Query& query,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ throw;
|
||||||
|
+ } catch (...) {
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/lib/remote/jsonrpcconnection.cpp b/lib/remote/jsonrpcconnection.cpp
|
||||||
|
index d49c0b359a..8e95325feb 100644
|
||||||
|
--- lib/remote/jsonrpcconnection.cpp
|
||||||
|
+++ lib/remote/jsonrpcconnection.cpp
|
||||||
|
@@ -212,7 +212,7 @@ void JsonRpcConnection::SendMessage(const Dictionary::Ptr& message)
|
||||||
|
|
||||||
|
Ptr keepAlive (this);
|
||||||
|
|
||||||
|
- m_IoStrand.post([this, keepAlive, message]() { SendMessageInternal(message); });
|
||||||
|
+ boost::asio::post(m_IoStrand, [this, keepAlive, message] { SendMessageInternal(message); });
|
||||||
|
}
|
||||||
|
|
||||||
|
void JsonRpcConnection::SendRawMessage(const String& message)
|
||||||
|
@@ -223,7 +223,7 @@ void JsonRpcConnection::SendRawMessage(const String& message)
|
||||||
|
|
||||||
|
Ptr keepAlive (this);
|
||||||
|
|
||||||
|
- m_IoStrand.post([this, keepAlive, message]() {
|
||||||
|
+ boost::asio::post(m_IoStrand, [this, keepAlive, message] {
|
||||||
|
if (m_ShuttingDown) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
diff --git a/lib/base/tcpsocket.hpp b/lib/base/tcpsocket.hpp
|
||||||
|
index 471ad8d239..1cf1a23501 100644
|
||||||
|
--- lib/base/tcpsocket.hpp
|
||||||
|
+++ lib/base/tcpsocket.hpp
|
||||||
|
@@ -41,8 +41,7 @@ void Connect(Socket& socket, const String& node, const String& service)
|
||||||
|
using boost::asio::ip::tcp;
|
||||||
|
|
||||||
|
tcp::resolver resolver (IoEngine::Get().GetIoContext());
|
||||||
|
- tcp::resolver::query query (node, service);
|
||||||
|
- auto result (resolver.resolve(query));
|
||||||
|
+ auto result (resolver.resolve(node.CStr(), service.CStr()));
|
||||||
|
auto current (result.begin());
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
@@ -72,8 +71,7 @@ void Connect(Socket& socket, const String& node, const String& service, boost::a
|
||||||
|
using boost::asio::ip::tcp;
|
||||||
|
|
||||||
|
tcp::resolver resolver (IoEngine::Get().GetIoContext());
|
||||||
|
- tcp::resolver::query query (node, service);
|
||||||
|
- auto result (resolver.async_resolve(query, yc));
|
||||||
|
+ auto result (resolver.async_resolve(node.CStr(), service.CStr(), yc));
|
||||||
|
auto current (result.begin());
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
diff --git a/lib/remote/apilistener.cpp b/lib/remote/apilistener.cpp
|
||||||
|
index 519469aafa..7ef3acddda 100644
|
||||||
|
--- lib/remote/apilistener.cpp
|
||||||
|
+++ lib/remote/apilistener.cpp
|
||||||
|
@@ -439,9 +439,7 @@ bool ApiListener::AddListener(const String& node, const String& service)
|
||||||
|
|
||||||
|
try {
|
||||||
|
tcp::resolver resolver (io);
|
||||||
|
- tcp::resolver::query query (node, service, tcp::resolver::query::passive);
|
||||||
|
-
|
||||||
|
- auto result (resolver.resolve(query));
|
||||||
|
+ auto result (resolver.resolve(node.CStr(), service.CStr(), tcp::resolver::passive));
|
||||||
|
auto current (result.begin());
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
|
|
@ -38,9 +38,9 @@ etc/bash_completion.d/icinga2
|
||||||
@sample %%ETCDIR%%/zones.conf.sample
|
@sample %%ETCDIR%%/zones.conf.sample
|
||||||
%%ETCDIR%%/zones.d/README
|
%%ETCDIR%%/zones.d/README
|
||||||
%%MYSQL%%lib/icinga2/libmysql_shim.so
|
%%MYSQL%%lib/icinga2/libmysql_shim.so
|
||||||
%%MYSQL%%lib/icinga2/libmysql_shim.so.2.14.3
|
%%MYSQL%%lib/icinga2/libmysql_shim.so.2.14.5
|
||||||
%%PGSQL%%lib/icinga2/libpgsql_shim.so
|
%%PGSQL%%lib/icinga2/libpgsql_shim.so
|
||||||
%%PGSQL%%lib/icinga2/libpgsql_shim.so.2.14.3
|
%%PGSQL%%lib/icinga2/libpgsql_shim.so.2.14.5
|
||||||
lib/icinga2/sbin/icinga2
|
lib/icinga2/sbin/icinga2
|
||||||
libexec/nagios/check_nscp_api
|
libexec/nagios/check_nscp_api
|
||||||
sbin/icinga2
|
sbin/icinga2
|
||||||
|
|
Loading…
Add table
Reference in a new issue