diff -Nru amule-2.3.3/debian/changelog amule-2.3.3/debian/changelog --- amule-2.3.3/debian/changelog 2026-04-14 17:36:45.000000000 +0200 +++ amule-2.3.3/debian/changelog 2026-05-18 20:33:40.000000000 +0200 @@ -1,3 +1,11 @@ +amule (1:2.3.3-4.1) unstable; urgency=medium + + * Non-maintainer upload. + * Switch to unversioned libboost-dev. (Closes: #1136971) + * Fix build with Boost 1.74+: update configure and LibSocketAsio.cpp. + + -- Anton Gladky Mon, 18 May 2026 20:33:40 +0200 + amule (1:2.3.3-4) unstable; urgency=medium * debian/patches/fix_assert_failure_inside_doseek.patch diff -Nru amule-2.3.3/debian/control amule-2.3.3/debian/control --- amule-2.3.3/debian/control 2026-04-14 17:36:45.000000000 +0200 +++ amule-2.3.3/debian/control 2026-05-18 20:33:32.000000000 +0200 @@ -7,8 +7,7 @@ autopoint, autotools-dev, debhelper-compat (= 13), - libboost1.83-dev, - libboost-system1.83-dev, + libboost-dev, libcrypto++-dev, libgd-dev, libgeoip-dev, diff -Nru amule-2.3.3/debian/patches/fix_boost_system_header_only.patch amule-2.3.3/debian/patches/fix_boost_system_header_only.patch --- amule-2.3.3/debian/patches/fix_boost_system_header_only.patch 1970-01-01 01:00:00.000000000 +0100 +++ amule-2.3.3/debian/patches/fix_boost_system_header_only.patch 2026-05-18 20:33:32.000000000 +0200 @@ -0,0 +1,182 @@ +Description: Fix build with Boost 1.74+ + Update configure and LibSocketAsio.cpp for header-only boost::system + and new Boost.Asio API introduced in Boost 1.74. +Author: Anton Gladky +Bug-Debian: https://bugs.debian.org/1136971 +Forwarded: no +Last-Update: 2026-05-18 + +Index: amule-2.3.3/configure +=================================================================== +--- amule-2.3.3.orig/configure ++++ amule-2.3.3/configure +@@ -10490,8 +10490,6 @@ $as_echo "$boost_cv_lib_system" >&6; } + case $boost_cv_lib_system in #( + (no) $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 +- +- as_fn_error $? "cannot find the flags to link with Boost system" "$LINENO" 5 + ;; + esac + BOOST_SYSTEM_LDFLAGS=$boost_cv_lib_system_LDFLAGS +@@ -10510,14 +10508,32 @@ fi + + if test ${boost_cv_lib_system:-no} != yes; then : + +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if boost::system is header-only" >&5 ++$as_echo_n "checking if boost::system is header-only... " >&6; } ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h */ ++#include ++int main() { boost::system::error_code e; e.clear(); return 0; } ++_ACEOF ++ if ac_fn_cxx_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ BOOST_SYSTEM_LIBS="" ++ BOOST_SYSTEM_LDFLAGS="" ++ BOOST_SYSTEM_LDPATH="" ++ BOOST_LDPATH="" ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + Boost support has been disabled because Boost.System not found" >&5 + $as_echo "$as_me: WARNING: + Boost support has been disabled because Boost.System not found" >&2;} + _mule_warning_7=yes + _mule_has_warnings=yes +- +- with_boost=disabled ++ with_boost=disabled ++ fi ++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + fi + +Index: amule-2.3.3/src/LibSocketAsio.cpp +=================================================================== +--- amule-2.3.3.orig/src/LibSocketAsio.cpp ++++ amule-2.3.3/src/LibSocketAsio.cpp +@@ -41,6 +41,7 @@ + #endif + + #include // Needed for std::min - Boost up to 1.54 fails to compile with MSVC 2013 otherwise ++#include + + #include + #include +@@ -70,7 +71,23 @@ + + using namespace boost::asio; + using namespace boost::system; // for error_code +-static io_service s_io_service; ++static io_context s_io_service; ++ ++// Compatibility shim: exposes the old io_service::strand API (dispatch/post/wrap) ++// using the new executor-based strand from Boost.Asio 1.74+. ++class mule_strand { ++ boost::asio::strand m_inner; ++public: ++ explicit mule_strand(boost::asio::io_context& ctx) ++ : m_inner(boost::asio::make_strand(ctx)) {} ++ template ++ void dispatch(F f) { boost::asio::dispatch(m_inner, std::move(f)); } ++ template ++ void post(F f) { boost::asio::post(m_inner, std::move(f)); } ++ template ++ auto wrap(F f) -> decltype(boost::asio::bind_executor(m_inner, std::move(f))) ++ { return boost::asio::bind_executor(m_inner, std::move(f)); } ++}; + + // Number of threads in the Asio thread pool + const int CAsioService::m_numberOfThreads = 4; +@@ -300,7 +317,7 @@ public: + // Close prevents creation of any more callbacks, but does not clear any callbacks already + // sitting in Asio's event queue (I have seen such a crash). + // So create a delay timer so they can be called until core is notified. +- m_timer.expires_from_now(boost::posix_time::seconds(1)); ++ m_timer.expires_after(std::chrono::seconds(1)); + m_timer.async_wait(m_strand.wrap(boost::bind(& CAsioSocketImpl::HandleDestroy, this))); + } + } +@@ -618,8 +635,8 @@ private: + uint32 m_readBufferContent; + bool m_eventPending; + char * m_sendBuffer; +- io_service::strand m_strand; // handle synchronisation in io_service thread pool +- deadline_timer m_timer; ++ mule_strand m_strand; // handle synchronisation in io_context thread pool ++ steady_timer m_timer; + bool m_connected; + bool m_closed; + bool m_isDestroying; // true if Destroy() was called +@@ -886,7 +903,7 @@ private: + CScopedPtr m_currentSocket; + // Is there a socket available? + bool m_socketAvailable; +- io_service::strand m_strand; // handle synchronisation in io_service thread pool ++ mule_strand m_strand; // handle synchronisation in io_context thread pool + }; + + +@@ -1049,7 +1066,7 @@ public: + // Close prevents creation of any more callbacks, but does not clear any callbacks already + // sitting in Asio's event queue (I have seen such a crash). + // So create a delay timer so they can be called until core is notified. +- m_timer.expires_from_now(boost::posix_time::seconds(1)); ++ m_timer.expires_after(std::chrono::seconds(1)); + m_timer.async_wait(m_strand.wrap(boost::bind(& CAsioUDPSocketImpl::HandleDestroy, this))); + } + } +@@ -1162,8 +1179,8 @@ private: + ip::udp::socket * m_socket; + CMuleUDPSocket * m_muleSocket; + bool m_OK; +- io_service::strand m_strand; // handle synchronisation in io_service thread pool +- deadline_timer m_timer; ++ mule_strand m_strand; // handle synchronisation in io_context thread pool ++ steady_timer m_timer; + amuleIPV4Address m_address; + + // One fix receive buffer +@@ -1254,7 +1271,7 @@ public: + void * Entry() + { + AddLogLineNS(CFormat(_("Asio thread %d started")) % m_threadNumber); +- io_service::work worker(s_io_service); // keep io_service running ++ auto worker = boost::asio::make_work_guard(s_io_service); // keep io_context running + s_io_service.run(); + AddDebugLogLineN(logAsio, CFormat(wxT("Asio thread %d stopped")) % m_threadNumber); + +@@ -1342,7 +1359,7 @@ bool amuleIPV4Address::Hostname(const wx + // This is usually just an IP. + std::string sname(unicode2char(name)); + error_code ec; +- ip::address_v4 adr = ip::address_v4::from_string(sname, ec); ++ ip::address_v4 adr = ip::make_address_v4(sname, ec); + if (!ec) { + m_endpoint->address(adr); + return true; +@@ -1353,17 +1370,16 @@ bool amuleIPV4Address::Hostname(const wx + error_code ec2; + ip::tcp::resolver res(s_io_service); + // We only want to get IPV4 addresses. +- ip::tcp::resolver::query query(ip::tcp::v4(), sname, ""); +- ip::tcp::resolver::iterator endpoint_iterator = res.resolve(query, ec2); ++ ip::tcp::resolver::results_type results = res.resolve(ip::tcp::v4(), sname, "", ec2); + if (ec2) { + AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolve failed: %s")) % name % ec2.message()); + return false; + } +- if (endpoint_iterator == ip::tcp::resolver::iterator()) { ++ if (results.empty()) { + AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolve failed: no address found")) % name); + return false; + } +- m_endpoint->address(endpoint_iterator->endpoint().address()); ++ m_endpoint->address(results.begin()->endpoint().address()); + AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolved to %s")) % name % IPAddress()); + return true; + } diff -Nru amule-2.3.3/debian/patches/series amule-2.3.3/debian/patches/series --- amule-2.3.3/debian/patches/series 2026-04-14 17:36:45.000000000 +0200 +++ amule-2.3.3/debian/patches/series 2026-05-18 20:33:32.000000000 +0200 @@ -4,3 +4,4 @@ #libupnp1.8.patch wx3.2.patch fix_assert_failure_inside_doseek.patch +fix_boost_system_header_only.patch