Skip to content

Instantly share code, notes, and snippets.

@lubo
Last active February 1, 2026 21:02
Show Gist options
  • Select an option

  • Save lubo/e0af046bc6d32334fd66fa5bc05d79d2 to your computer and use it in GitHub Desktop.

Select an option

Save lubo/e0af046bc6d32334fd66fa5bc05d79d2 to your computer and use it in GitHub Desktop.
Patches for botan2 AUR package that make it build against Boost 1.89
--- src/lib/utils/socket/socket.cpp 2026-02-01 16:49:06.763198126 +0100
+++ src/lib/utils/socket/socket.cpp 2026-02-01 17:42:22.747659184 +0100
@@ -48,19 +48,19 @@
std::chrono::milliseconds timeout) :
m_timeout(timeout), m_timer(m_io), m_tcp(m_io)
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
check_timeout();
boost::asio::ip::tcp::resolver resolver(m_io);
- boost::asio::ip::tcp::resolver::query query(hostname, service);
- boost::asio::ip::tcp::resolver::iterator dns_iter = resolver.resolve(query);
+ const boost::asio::ip::tcp::resolver::results_type dns_iter =
+ resolver.resolve(std::string{hostname}, std::string{service});
boost::system::error_code ec = boost::asio::error::would_block;
auto connect_cb = [&ec](const boost::system::error_code& e,
- boost::asio::ip::tcp::resolver::iterator) { ec = e; };
+ const boost::asio::ip::basic_resolver_iterator<boost::asio::ip::tcp>&) { ec = e; };
- boost::asio::async_connect(m_tcp, dns_iter, connect_cb);
+ boost::asio::async_connect(m_tcp, dns_iter.begin(), dns_iter.end(), connect_cb);
while(ec == boost::asio::error::would_block)
{
@@ -75,7 +75,7 @@
void write(const uint8_t buf[], size_t len) override
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
boost::system::error_code ec = boost::asio::error::would_block;
@@ -92,7 +92,7 @@
size_t read(uint8_t buf[], size_t len) override
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
boost::system::error_code ec = boost::asio::error::would_block;
size_t got = 0;
@@ -115,7 +115,7 @@
private:
void check_timeout()
{
- if(m_tcp.is_open() && m_timer.expires_at() < std::chrono::system_clock::now())
+ if(m_tcp.is_open() && m_timer.expiry() < std::chrono::system_clock::now())
{
boost::system::error_code err;
m_tcp.close(err);
@@ -125,7 +125,7 @@
}
const std::chrono::milliseconds m_timeout;
- boost::asio::io_service m_io;
+ boost::asio::io_context m_io;
boost::asio::system_timer m_timer;
boost::asio::ip::tcp::socket m_tcp;
};
--- src/lib/utils/socket/socket_udp.cpp 2026-02-01 17:48:22.755111643 +0100
+++ src/lib/utils/socket/socket_udp.cpp 2026-02-01 17:52:20.093134090 +0100
@@ -48,19 +48,19 @@
std::chrono::microseconds timeout) :
m_timeout(timeout), m_timer(m_io), m_udp(m_io)
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
check_timeout();
boost::asio::ip::udp::resolver resolver(m_io);
- boost::asio::ip::udp::resolver::query query(hostname, service);
- boost::asio::ip::udp::resolver::iterator dns_iter = resolver.resolve(query);
+ const boost::asio::ip::udp::resolver::results_type dns_iter =
+ resolver.resolve(std::string{hostname}, std::string{service});
boost::system::error_code ec = boost::asio::error::would_block;
auto connect_cb = [&ec](const boost::system::error_code& e,
- boost::asio::ip::udp::resolver::iterator) { ec = e; };
+ const boost::asio::ip::basic_resolver_iterator<boost::asio::ip::udp>&) { ec = e; };
- boost::asio::async_connect(m_udp, dns_iter, connect_cb);
+ boost::asio::async_connect(m_udp, dns_iter.begin(), dns_iter.end(), connect_cb);
while(ec == boost::asio::error::would_block)
{
@@ -75,7 +75,7 @@
void write(const uint8_t buf[], size_t len) override
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
boost::system::error_code ec = boost::asio::error::would_block;
@@ -95,7 +95,7 @@
size_t read(uint8_t buf[], size_t len) override
{
- m_timer.expires_from_now(m_timeout);
+ m_timer.expires_after(m_timeout);
boost::system::error_code ec = boost::asio::error::would_block;
size_t got = 0;
@@ -121,7 +121,7 @@
private:
void check_timeout()
{
- if(m_udp.is_open() && m_timer.expires_at() < std::chrono::system_clock::now())
+ if(m_udp.is_open() && m_timer.expiry() < std::chrono::system_clock::now())
{
boost::system::error_code err;
m_udp.close(err);
@@ -131,7 +131,7 @@
}
const std::chrono::microseconds m_timeout;
- boost::asio::io_service m_io;
+ boost::asio::io_context m_io;
boost::asio::system_timer m_timer;
boost::asio::ip::udp::socket m_udp;
};
--- src/lib/utils/boost/info.txt 2026-02-01 21:44:22.006365347 +0100
+++ src/lib/utils/boost/info.txt 2026-02-01 21:44:35.567098178 +0100
@@ -5,5 +5,4 @@
load_on vendor
<libs>
-all -> boost_system
</libs>
diff --git a/PKGBUILD b/PKGBUILD
index d6ca976..6bd99aa 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -14,13 +14,21 @@ arch=(x86_64)
url='https://botan.randombit.net/'
license=(BSD)
depends=(xz sqlite)
-makedepends=(python boost)
+makedepends=(python python-sphinx boost)
optdepends=('python: for using botan2.py')
-source=(https://botan.randombit.net/releases/Botan-${pkgver}.tar.xz{,.asc})
+source=(https://botan.randombit.net/releases/Botan-${pkgver}.tar.xz{,.asc}
+ boost-fixes.patch)
sha256sums=('dfeea0e0a6f26d6724c4af01da9a7b88487adb2d81ba7c72fcaf52db522c9ad4'
+ 'SKIP'
'SKIP')
validpgpkeys=('621DAF6411E1851C4CF9A2E16211EBF1EFBADFBC') # Botan Distribution Key
+prepare() {
+ cd "Botan-${pkgver}"
+
+ patch -p0 -i ../boost-fixes.patch
+}
+
build() {
cd Botan-$pkgver
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment