[med-svn] [Git][med-team/odil][master] fix(debian): fix Boost 1.90 build (Closes: #1128135)

Anton Gladky (@gladk) gitlab at salsa.debian.org
Fri Mar 20 06:07:26 GMT 2026



Anton Gladky pushed to branch master at Debian Med / odil


Commits:
f3f90b0c by Anton Gladky at 2026-03-20T07:07:16+01:00
fix(debian): fix Boost 1.90 build (Closes: #1128135)

- Remove unused Boost.DateTime build dependency.
- Add lintian-override for t64 library transition.

- - - - -


5 changed files:

- debian/changelog
- + debian/patches/fix_boost190.patch
- debian/patches/series
- debian/patches/update-python-install-path.patch
- + debian/source/lintian-overrides


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,12 @@
+odil (0.13.0-3) unstable; urgency=medium
+
+  * Team upload.
+  * Fix build failure with Boost >= 1.90. (Closes: #1128135)
+  * Remove now-unused Boost.DateTime build dependency.
+  * Add lintian-override for t64 library transition.
+
+ -- Anton Gladky <gladk at debian.org>  Fri, 20 Mar 2026 07:05:36 +0100
+
 odil (0.13.0-2) unstable; urgency=medium
 
   * Team upload.


=====================================
debian/patches/fix_boost190.patch
=====================================
@@ -0,0 +1,343 @@
+Description: Fix build failures with Boost >= 1.90
+ Replace deprecated boost::asio::deadline_timer with steady_timer (removed
+ in Boost 1.90). Also remove now-unused Boost.System and Boost.DateTime
+ build dependencies, and switch all posix_time usage to std::chrono.
+Author: Anton Gladky <gladk at debian.org>
+Bug-Debian: https://bugs.debian.org/1128135
+Forwarded: no
+
+--- odil-0.13.0.orig/src/CMakeLists.txt
++++ odil-0.13.0/src/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-find_package(Boost REQUIRED COMPONENTS date_time filesystem log system)
++find_package(Boost REQUIRED COMPONENTS filesystem log)
+ find_package(ICU REQUIRED COMPONENTS uc)
+ find_package(JsonCpp REQUIRED)
+ if(WITH_DCMTK)
+--- odil-0.13.0.orig/wrappers/js/CMakeLists.txt
++++ odil-0.13.0/wrappers/js/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-find_package(Boost REQUIRED COMPONENTS system)
++find_package(Boost REQUIRED)
+ 
+ if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/icu/source/common")
+     file(
+
+--- odil-0.13.0.orig/tests/code/EchoSCP.cpp
++++ odil-0.13.0/tests/code/EchoSCP.cpp
+@@ -23,7 +23,7 @@ struct Status
+ void run_server(Status * status)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+--- odil-0.13.0.orig/tests/code/FindSCP.cpp
++++ odil-0.13.0/tests/code/FindSCP.cpp
+@@ -8,6 +8,8 @@
+ #include <thread>
+ #include <vector>
+ 
++#include <fstream>
++
+ #include <boost/asio.hpp>
+ #include <boost/filesystem.hpp>
+ 
+@@ -79,7 +81,7 @@ private:
+ void run_server(Status * status)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+--- odil-0.13.0.orig/tests/code/GetSCP.cpp
++++ odil-0.13.0/tests/code/GetSCP.cpp
+@@ -8,6 +8,7 @@
+ #include <thread>
+ #include <vector>
+ 
++#include <fstream>
+ #include <boost/asio.hpp>
+ #include <boost/filesystem.hpp>
+ 
+@@ -91,7 +92,7 @@ private:
+ void run_server(Status * status)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+--- odil-0.13.0.orig/tests/code/MoveSCP.cpp
++++ odil-0.13.0/tests/code/MoveSCP.cpp
+@@ -7,6 +7,7 @@
+ #include <thread>
+ #include <vector>
+ 
++#include <fstream>
+ #include <boost/asio.hpp>
+ #include <boost/filesystem.hpp>
+ 
+@@ -121,7 +122,7 @@ private:
+ void run_server(Status * status)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+--- odil-0.13.0.orig/tests/code/NCreateSCP.cpp
++++ odil-0.13.0/tests/code/NCreateSCP.cpp
+@@ -23,7 +23,7 @@ struct Status
+ void run_server(Status * status)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+--- odil-0.13.0.orig/tests/code/SCPDispatcher.cpp
++++ odil-0.13.0/tests/code/SCPDispatcher.cpp
+@@ -5,6 +5,8 @@
+ #include <memory>
+ #include <thread>
+ 
++#include <boost/asio.hpp>
++
+ #include "odil/Association.h"
+ #include "odil/EchoSCP.h"
+ #include "odil/Exception.h"
+@@ -22,7 +24,7 @@ struct Status
+ void run_server(Status * status, bool with_echo)
+ {
+     odil::Association association;
+-    association.set_tcp_timeout(boost::posix_time::seconds(1));
++    association.set_tcp_timeout(std::chrono::seconds(1));
+ 
+     try
+     {
+
+
+Index: odil-0.13.0/src/odil/Association.cpp
+===================================================================
+--- odil-0.13.0.orig/src/odil/Association.cpp
++++ odil-0.13.0/src/odil/Association.cpp
+@@ -9,6 +9,7 @@
+ #include "Association.h"
+ 
+ #include <algorithm>
++#include <chrono>
+ #include <functional>
+ #include <map>
+ #include <string>
+@@ -46,8 +47,8 @@ Association
+   _transfer_syntaxes_by_abstract_syntax(), _transfer_syntaxes_by_id(),
+   _next_message_id(1)
+ {
+-    this->set_tcp_timeout(boost::posix_time::pos_infin);
+-    this->set_message_timeout(boost::posix_time::seconds(30));
++    this->set_tcp_timeout(boost::asio::steady_timer::duration::max());
++    this->set_message_timeout(std::chrono::seconds(30));
+ }
+ 
+ Association
+Index: odil-0.13.0/src/odil/MoveSCU.cpp
+===================================================================
+--- odil-0.13.0.orig/src/odil/MoveSCU.cpp
++++ odil-0.13.0/src/odil/MoveSCU.cpp
+@@ -104,7 +104,7 @@ MoveSCU
+         while(!done)
+         {
+             // Use a small timeout to avoid blocking for a long time.
+-            boost::posix_time::milliseconds const timeout(10);
++            std::chrono::milliseconds const timeout(10);
+             store_association.set_tcp_timeout(timeout);
+             store_association.set_message_timeout(timeout);
+ 
+Index: odil-0.13.0/src/odil/dul/StateMachine.cpp
+===================================================================
+--- odil-0.13.0.orig/src/odil/dul/StateMachine.cpp
++++ odil-0.13.0/src/odil/dul/StateMachine.cpp
+@@ -38,7 +38,7 @@ namespace dul
+ 
+ StateMachine
+ ::StateMachine()
+-: _state(State::Sta1), _timeout(boost::posix_time::pos_infin),
++: _state(State::Sta1), _timeout(boost::asio::steady_timer::duration::max()),
+   _artim_timer(_transport.get_service()),
+   _association_acceptor(default_association_acceptor)
+ {
+@@ -265,7 +265,7 @@ StateMachine
+     return;
+ 
+ 
+-    auto const canceled = this->_artim_timer.expires_from_now(this->_timeout);
++    auto const canceled = this->_artim_timer.expires_after(this->_timeout);
+     if(canceled != 0)
+     {
+         throw Exception("ARTIM timer started with pending operations");
+@@ -300,7 +300,7 @@ StateMachine
+     return;
+ 
+ 
+-    this->_artim_timer.expires_at(boost::posix_time::pos_infin);
++    this->_artim_timer.expires_at(boost::asio::steady_timer::time_point::max());
+     this->_transport.get_service().poll();
+     // FIXME: check that the timer was aborted
+     /*
+Index: odil-0.13.0/src/odil/dul/StateMachine.h
+===================================================================
+--- odil-0.13.0.orig/src/odil/dul/StateMachine.h
++++ odil-0.13.0/src/odil/dul/StateMachine.h
+@@ -64,7 +64,7 @@ public:
+     };
+ 
+     /// @brief Duration of the timeout.
+-    typedef boost::asio::deadline_timer::duration_type duration_type;
++    typedef boost::asio::steady_timer::duration duration_type;
+ 
+     /// @brief Constructor, initializing to Sta1.
+     StateMachine();
+@@ -156,7 +156,7 @@ private:
+     duration_type _timeout;
+ 
+     /// @brief Association Request/Reject/Release Timer.
+-    boost::asio::deadline_timer _artim_timer;
++    boost::asio::steady_timer _artim_timer;
+ 
+     /// @brief Callback checking whether an association request is acceptable.
+     AssociationAcceptor _association_acceptor;
+Index: odil-0.13.0/src/odil/dul/Transport.cpp
+===================================================================
+--- odil-0.13.0.orig/src/odil/dul/Transport.cpp
++++ odil-0.13.0/src/odil/dul/Transport.cpp
+@@ -11,8 +11,9 @@
+ #include <memory>
+ #include <string>
+ 
++#include <chrono>
++
+ #include <boost/asio.hpp>
+-#include <boost/date_time.hpp>
+ 
+ #include "odil/Exception.h"
+ #include "odil/logging.h"
+@@ -25,7 +26,7 @@ namespace dul
+ 
+ Transport
+ ::Transport()
+-: _service(), _socket(nullptr), _timeout(boost::posix_time::pos_infin),
++: _service(), _socket(nullptr), _timeout(boost::asio::steady_timer::duration::max()),
+   _deadline(_service)
+ {
+     // Nothing else
+@@ -235,7 +236,15 @@ void
+ Transport
+ ::_start_deadline(Source & source, boost::system::error_code & error)
+ {
+-    auto const canceled = this->_deadline.expires_from_now(this->_timeout);
++    std::size_t canceled;
++    if(this->_timeout == boost::asio::steady_timer::duration::max())
++    {
++        canceled = this->_deadline.expires_at(boost::asio::steady_timer::time_point::max());
++    }
++    else
++    {
++        canceled = this->_deadline.expires_after(this->_timeout);
++    }
+     if(canceled != 0)
+     {
+         throw Exception("TCP timer started with pending operations");
+@@ -254,7 +263,7 @@ void
+ Transport
+ ::_stop_deadline()
+ {
+-    this->_deadline.expires_at(boost::posix_time::pos_infin);
++    this->_deadline.expires_at(boost::asio::steady_timer::time_point::max());
+ }
+ 
+ void
+Index: odil-0.13.0/src/odil/dul/Transport.h
+===================================================================
+--- odil-0.13.0.orig/src/odil/dul/Transport.h
++++ odil-0.13.0/src/odil/dul/Transport.h
+@@ -12,8 +12,9 @@
+ #include <memory>
+ #include <string>
+ 
++#include <chrono>
++
+ #include <boost/asio.hpp>
+-#include <boost/date_time.hpp>
+ 
+ // NOTE: the io_service type alias has been removed in boost 1.87.0
+ #if BOOST_VERSION >= 108700
+@@ -47,7 +48,7 @@ struct ODIL_API Transport
+     typedef boost::asio::ip::tcp::socket Socket;
+ 
+     /// @brief Duration of the timeout.
+-    typedef boost::asio::deadline_timer::duration_type duration_type;
++    typedef boost::asio::steady_timer::duration duration_type;
+ 
+     /// @brief Constructor.
+     Transport();
+@@ -98,7 +99,7 @@ private:
+     boost::asio::io_service _service;
+     std::shared_ptr<Socket> _socket;
+     duration_type _timeout;
+-    boost::asio::deadline_timer _deadline;
++    boost::asio::steady_timer _deadline;
+ 
+     std::shared_ptr<boost::asio::ip::tcp::acceptor> _acceptor;
+ 
+Index: odil-0.13.0/wrappers/python/Association.cpp
+===================================================================
+--- odil-0.13.0.orig/wrappers/python/Association.cpp
++++ odil-0.13.0/wrappers/python/Association.cpp
+@@ -6,8 +6,9 @@
+  * for details.
+  ************************************************************************/
+ 
++#include <chrono>
++
+ #include <boost/asio.hpp>
+-#include <boost/date_time/posix_time/posix_time.hpp>
+ #include <pybind11/pybind11.h>
+ 
+ #include "odil/Association.h"
+@@ -33,13 +34,14 @@ void receive_association(
+ 
+ float get_tcp_timeout(odil::Association const& association)
+ {
+-    return association.get_tcp_timeout().total_microseconds()/1000000.f;
++    return std::chrono::duration_cast<std::chrono::microseconds>(
++        association.get_tcp_timeout()).count() / 1000000.f;
+ }
+ 
+ void set_tcp_timeout(odil::Association& association, float seconds)
+ {
+     association.set_tcp_timeout(
+-        boost::posix_time::microseconds(int(seconds*1000000.f)));
++        std::chrono::microseconds(int(seconds*1000000.f)));
+ }
+ 
+ }
+Index: odil-0.13.0/src/odil/SCPDispatcher.cpp
+===================================================================
+--- odil-0.13.0.orig/src/odil/SCPDispatcher.cpp
++++ odil-0.13.0/src/odil/SCPDispatcher.cpp
+@@ -12,6 +12,7 @@
+ #include "odil/SCPDispatcher.h"
+ #include "odil/Value.h"
+ 
++#include <iomanip>
+ #include <map>
+ #include <memory>
+ #include <sstream>


=====================================
debian/patches/series
=====================================
@@ -5,3 +5,7 @@ remove-network-unit-tests.patch
 fix-g++-13.patch
 fix-boost-asio-1.87.patch
 update-python-install-path.patch
+boost190.aptch
+fix-deadline-timer
+fix_tests.patch
+fix_boost190.patch


=====================================
debian/patches/update-python-install-path.patch
=====================================
@@ -2,8 +2,10 @@ Description: Install python in dist-packages
 Author: Julien Lamy <lamy at unistra.fr>
 Last-Update: 2025-08-19
 Forwarded: not-needed
---- a/wrappers/python/CMakeLists.txt
-+++ b/wrappers/python/CMakeLists.txt
+Index: odil/wrappers/python/CMakeLists.txt
+===================================================================
+--- odil.orig/wrappers/python/CMakeLists.txt
++++ odil/wrappers/python/CMakeLists.txt
 @@ -32,7 +32,7 @@ execute_process(
      COMMAND ${Python_EXECUTABLE}
          -c "import os; import sysconfig; \
@@ -13,8 +15,10 @@ Forwarded: not-needed
              print(path.replace(os.path.sep, '/'))"
      OUTPUT_VARIABLE PYTHON_SITE_PACKAGES
      OUTPUT_STRIP_TRAILING_WHITESPACE)
---- a/applications/CMakeLists.txt
-+++ b/applications/CMakeLists.txt
+Index: odil/applications/CMakeLists.txt
+===================================================================
+--- odil.orig/applications/CMakeLists.txt
++++ odil/applications/CMakeLists.txt
 @@ -11,7 +11,7 @@ if(BUILD_PYTHON_WRAPPERS)
          COMMAND ${Python_EXECUTABLE}
              -c "import os; import sysconfig; \


=====================================
debian/source/lintian-overrides
=====================================
@@ -0,0 +1 @@
+odil source: version-substvar-for-external-package Conflicts ${source:Version} libodil0t64 -> libodil0



View it on GitLab: https://salsa.debian.org/med-team/odil/-/commit/f3f90b0cf48523ee88452ebd3daeb2efb0b3415b

-- 
View it on GitLab: https://salsa.debian.org/med-team/odil/-/commit/f3f90b0cf48523ee88452ebd3daeb2efb0b3415b
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20260320/da96b205/attachment-0001.htm>


More information about the debian-med-commit mailing list