changeset 5629:2c95a34af64f find-refactoring

integration mainline->find-refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 16 May 2024 21:33:52 +0200
parents 732ec9feeea8 (current diff) 6045c696e86b (diff)
children 3f13db27b399
files NEWS
diffstat 12 files changed, 152 insertions(+), 142 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Sat May 11 15:43:07 2024 +0200
+++ b/NEWS	Thu May 16 21:33:52 2024 +0200
@@ -41,11 +41,13 @@
   when received as a response to a C-Store.
   See https://discourse.orthanc-server.org/t/ignore-dimse-status-0x0111-when-sending-partial-duplicate-studies/4555/3
 * Removed potential PHI from the logs when Orthanc encounters an error while
-  creating a zip file.
+  creating a ZIP archive.
 * Monitoring of stable resources now also takes into consideration the
   resource type, not only the resource identifier identifier.
 * When working with "DicomTlsEnabled": true and "DicomTlsRemoteCertificateRequired": false,
   Orthanc was refusing to start if no "DicomTlsTrustedCertificates" was provided.
+* Upgraded dependencies for static builds:
+  - boost 1.85.0
 
 
 Version 1.12.3 (2024-01-31)
--- a/OrthancFramework/Resources/CMake/BoostConfiguration.cmake	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancFramework/Resources/CMake/BoostConfiguration.cmake	Thu May 16 21:33:52 2024 +0200
@@ -90,10 +90,10 @@
   ## Parameters for static compilation of Boost 
   ##
   
-  set(BOOST_NAME boost_1_84_0)
-  set(BOOST_VERSION 1.84.0)
-  set(BOOST_BCP_SUFFIX bcpdigest-1.12.3)
-  set(BOOST_MD5 "af64830e570249076a0f024ae4654b59")
+  set(BOOST_NAME boost_1_85_0)
+  set(BOOST_VERSION 1.85.0)
+  set(BOOST_BCP_SUFFIX bcpdigest-1.12.4)
+  set(BOOST_MD5 "1017e9c8383efdea01c059a8d3cc4dda")
   set(BOOST_URL "https://orthanc.uclouvain.be/downloads/third-party-downloads/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz")
   set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME})
 
@@ -114,7 +114,7 @@
   if (FirstRun)
     execute_process(
       COMMAND ${PATCH_EXECUTABLE} -p0 -N -i
-      ${CMAKE_CURRENT_LIST_DIR}/../Patches/boost-1.84.0-emscripten.patch
+      ${CMAKE_CURRENT_LIST_DIR}/../Patches/boost-1.85.0-emscripten.patch
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
       RESULT_VARIABLE Failure
       )
--- a/OrthancFramework/Resources/CMake/BoostConfiguration.sh	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancFramework/Resources/CMake/BoostConfiguration.sh	Thu May 16 21:33:52 2024 +0200
@@ -25,10 +25,11 @@
 ##   - Orthanc between 1.11.2 and 1.12.0: Boost 1.80.0
 ##   - Orthanc 1.12.1: Boost 1.82.0
 ##   - Orthanc 1.12.2: Boost 1.83.0
-##   - Orthanc > 1.12.3: Boost 1.84.0
+##   - Orthanc 1.12.3: Boost 1.84.0
+##   - Orthanc > 1.12.3: Boost 1.85.0
 
-BOOST_VERSION=1_84_0
-ORTHANC_VERSION=1.12.3
+BOOST_VERSION=1_85_0
+ORTHANC_VERSION=1.12.4
 
 rm -rf /tmp/boost_${BOOST_VERSION}
 rm -rf /tmp/bcp/boost_${BOOST_VERSION}
--- a/OrthancFramework/Resources/Patches/boost-1.84.0-emscripten.patch	Sat May 11 15:43:07 2024 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-diff -urEb boost_1_84_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp boost_1_84_0/libs/locale/src/boost/locale/shared/date_time.cpp
---- boost_1_84_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp	2024-01-24 16:33:34.349801130 +0100
-+++ boost_1_84_0/libs/locale/src/boost/locale/shared/date_time.cpp	2024-01-24 16:35:29.516750122 +0100
-@@ -12,8 +12,10 @@
- #include <boost/locale/date_time.hpp>
- #include <boost/locale/formatting.hpp>
- #include <boost/core/exchange.hpp>
--#include <boost/thread/locks.hpp>
--#include <boost/thread/mutex.hpp>
-+#if !defined(__EMSCRIPTEN__)
-+#  include <boost/thread/locks.hpp>
-+#  include <boost/thread/mutex.hpp>
-+#endif
- #include <cmath>
- 
- namespace boost { namespace locale {
-@@ -400,6 +402,7 @@
-         return impl_->get_option(abstract_calendar::is_dst) != 0;
-     }
- 
-+#if !defined(__EMSCRIPTEN__)
-     namespace time_zone {
-         boost::mutex& tz_mutex()
-         {
-@@ -422,6 +425,7 @@
-             return boost::exchange(tz_id(), new_id);
-         }
-     } // namespace time_zone
-+#endif
- 
- }} // namespace boost::locale
- 
-diff -urEb boost_1_84_0.orig/libs/locale/src/boost/locale/shared/generator.cpp boost_1_84_0/libs/locale/src/boost/locale/shared/generator.cpp
---- boost_1_84_0.orig/libs/locale/src/boost/locale/shared/generator.cpp	2024-01-24 16:33:34.349801130 +0100
-+++ boost_1_84_0/libs/locale/src/boost/locale/shared/generator.cpp	2024-01-24 16:36:33.212167880 +0100
-@@ -7,8 +7,10 @@
- #include <boost/locale/encoding.hpp>
- #include <boost/locale/generator.hpp>
- #include <boost/locale/localization_backend.hpp>
--#include <boost/thread/locks.hpp>
--#include <boost/thread/mutex.hpp>
-+#if !defined(__EMSCRIPTEN__)
-+#  include <boost/thread/locks.hpp>
-+#  include <boost/thread/mutex.hpp>
-+#endif
- #include <algorithm>
- #include <map>
- #include <vector>
-@@ -21,7 +23,9 @@
-         {}
- 
-         mutable std::map<std::string, std::locale> cached;
-+#if !defined(__EMSCRIPTEN__)
-         mutable boost::mutex cached_lock;
-+#endif
- 
-         category_t cats;
-         char_facet_t chars;
-@@ -101,7 +105,9 @@
-     std::locale generator::generate(const std::locale& base, const std::string& id) const
-     {
-         if(d->caching_enabled) {
-+#if !defined(__EMSCRIPTEN__)
-             boost::unique_lock<boost::mutex> guard(d->cached_lock);
-+#endif
-             const auto p = d->cached.find(id);
-             if(p != d->cached.end())
-                 return p->second;
-@@ -126,7 +132,9 @@
-                 result = backend->install(result, facet, char_facet_t::nochar);
-         }
-         if(d->caching_enabled) {
-+#if !defined(__EMSCRIPTEN__)
-             boost::unique_lock<boost::mutex> guard(d->cached_lock);
-+#endif
-             const auto p = d->cached.find(id);
-             if(p == d->cached.end())
-                 d->cached[id] = result;
-diff -urEb boost_1_84_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp boost_1_84_0/libs/locale/src/boost/locale/shared/localization_backend.cpp
---- boost_1_84_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp	2024-01-24 16:33:34.349801130 +0100
-+++ boost_1_84_0/libs/locale/src/boost/locale/shared/localization_backend.cpp	2024-01-24 16:40:12.134162584 +0100
-@@ -5,8 +5,10 @@
- // https://www.boost.org/LICENSE_1_0.txt
- 
- #include <boost/locale/localization_backend.hpp>
--#include <boost/thread/locks.hpp>
--#include <boost/thread/mutex.hpp>
-+#if !defined(__EMSCRIPTEN__)
-+#  include <boost/thread/locks.hpp>
-+#  include <boost/thread/mutex.hpp>
-+#endif
- #include <functional>
- #include <memory>
- #include <vector>
-@@ -211,11 +213,13 @@
-             return mgr;
-         }
- 
-+#if !defined(__EMSCRIPTEN__)
-         boost::mutex& localization_backend_manager_mutex()
-         {
-             static boost::mutex the_mutex;
-             return the_mutex;
-         }
-+#endif
-         localization_backend_manager& localization_backend_manager_global()
-         {
-             static localization_backend_manager the_manager = make_default_backend_mgr();
-@@ -225,12 +229,16 @@
- 
-     localization_backend_manager localization_backend_manager::global()
-     {
-+#if !defined(__EMSCRIPTEN__)
-         boost::unique_lock<boost::mutex> lock(localization_backend_manager_mutex());
-+#endif
-         return localization_backend_manager_global();
-     }
-     localization_backend_manager localization_backend_manager::global(const localization_backend_manager& in)
-     {
-+#if !defined(__EMSCRIPTEN__)
-         boost::unique_lock<boost::mutex> lock(localization_backend_manager_mutex());
-+#endif
-         return exchange(localization_backend_manager_global(), in);
-     }
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancFramework/Resources/Patches/boost-1.85.0-emscripten.patch	Thu May 16 21:33:52 2024 +0200
@@ -0,0 +1,125 @@
+diff -urEb boost_1_85_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp boost_1_85_0/libs/locale/src/boost/locale/shared/date_time.cpp
+--- boost_1_85_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp	2024-05-16 20:54:25.516816710 +0200
++++ boost_1_85_0/libs/locale/src/boost/locale/shared/date_time.cpp	2024-05-16 20:55:09.144319528 +0200
+@@ -12,8 +12,10 @@
+ #include <boost/locale/date_time.hpp>
+ #include <boost/locale/formatting.hpp>
+ #include <boost/core/exchange.hpp>
+-#include <boost/thread/locks.hpp>
+-#include <boost/thread/mutex.hpp>
++#if !defined(__EMSCRIPTEN__)
++#  include <boost/thread/locks.hpp>
++#  include <boost/thread/mutex.hpp>
++#endif
+ #include <cmath>
+ 
+ namespace boost { namespace locale {
+@@ -400,6 +402,7 @@
+         return impl_->get_option(abstract_calendar::is_dst) != 0;
+     }
+ 
++#if !defined(__EMSCRIPTEN__)
+     namespace time_zone {
+         boost::mutex& tz_mutex()
+         {
+@@ -422,6 +425,7 @@
+             return boost::exchange(tz_id(), new_id);
+         }
+     } // namespace time_zone
++#endif
+ 
+ }} // namespace boost::locale
+ 
+diff -urEb boost_1_85_0.orig/libs/locale/src/boost/locale/shared/generator.cpp boost_1_85_0/libs/locale/src/boost/locale/shared/generator.cpp
+--- boost_1_85_0.orig/libs/locale/src/boost/locale/shared/generator.cpp	2024-05-16 20:54:25.516816710 +0200
++++ boost_1_85_0/libs/locale/src/boost/locale/shared/generator.cpp	2024-05-16 20:56:20.231509636 +0200
+@@ -7,8 +7,10 @@
+ #include <boost/locale/encoding.hpp>
+ #include <boost/locale/generator.hpp>
+ #include <boost/locale/localization_backend.hpp>
+-#include <boost/thread/locks.hpp>
+-#include <boost/thread/mutex.hpp>
++#if !defined(__EMSCRIPTEN__)
++#  include <boost/thread/locks.hpp>
++#  include <boost/thread/mutex.hpp>
++#endif
+ #include <algorithm>
+ #include <map>
+ #include <vector>
+@@ -21,7 +23,9 @@
+         {}
+ 
+         mutable std::map<std::string, std::locale> cached;
++#if !defined(__EMSCRIPTEN__)
+         mutable boost::mutex cached_lock;
++#endif
+ 
+         category_t cats;
+         char_facet_t chars;
+@@ -101,7 +105,9 @@
+     std::locale generator::generate(const std::locale& base, const std::string& id) const
+     {
+         if(d->caching_enabled) {
++#if !defined(__EMSCRIPTEN__)
+             boost::unique_lock<boost::mutex> guard(d->cached_lock);
++#endif
+             const auto p = d->cached.find(id);
+             if(p != d->cached.end())
+                 return p->second;
+@@ -126,7 +132,9 @@
+                 result = backend->install(result, facet, char_facet_t::nochar);
+         }
+         if(d->caching_enabled) {
++#if !defined(__EMSCRIPTEN__)
+             boost::unique_lock<boost::mutex> guard(d->cached_lock);
++#endif
+             const auto p = d->cached.find(id);
+             if(p == d->cached.end())
+                 d->cached[id] = result;
+diff -urEb boost_1_85_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp boost_1_85_0/libs/locale/src/boost/locale/shared/localization_backend.cpp
+--- boost_1_85_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp	2024-05-16 20:54:25.516816710 +0200
++++ boost_1_85_0/libs/locale/src/boost/locale/shared/localization_backend.cpp	2024-05-16 20:56:58.823070064 +0200
+@@ -5,8 +5,10 @@
+ // https://www.boost.org/LICENSE_1_0.txt
+ 
+ #include <boost/locale/localization_backend.hpp>
+-#include <boost/thread/locks.hpp>
+-#include <boost/thread/mutex.hpp>
++#if !defined(__EMSCRIPTEN__)
++#  include <boost/thread/locks.hpp>
++#  include <boost/thread/mutex.hpp>
++#endif
+ #include <functional>
+ #include <memory>
+ #include <vector>
+@@ -211,11 +213,13 @@
+             return mgr;
+         }
+ 
++#if !defined(__EMSCRIPTEN__)
+         boost::mutex& localization_backend_manager_mutex()
+         {
+             static boost::mutex the_mutex;
+             return the_mutex;
+         }
++#endif
+         localization_backend_manager& localization_backend_manager_global()
+         {
+             static localization_backend_manager the_manager = make_default_backend_mgr();
+@@ -225,12 +229,16 @@
+ 
+     localization_backend_manager localization_backend_manager::global()
+     {
++#if !defined(__EMSCRIPTEN__)
+         boost::unique_lock<boost::mutex> lock(localization_backend_manager_mutex());
++#endif
+         return localization_backend_manager_global();
+     }
+     localization_backend_manager localization_backend_manager::global(const localization_backend_manager& in)
+     {
++#if !defined(__EMSCRIPTEN__)
+         boost::unique_lock<boost::mutex> lock(localization_backend_manager_mutex());
++#endif
+         return exchange(localization_backend_manager_global(), in);
+     }
+ 
--- a/OrthancFramework/Sources/SystemToolbox.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancFramework/Sources/SystemToolbox.cpp	Thu May 16 21:33:52 2024 +0200
@@ -774,7 +774,7 @@
 
   MimeType SystemToolbox::AutodetectMimeType(const std::string& path)
   {
-    std::string extension = boost::filesystem::extension(path);
+    std::string extension = boost::filesystem::path(path).extension().string();
     Toolbox::ToLowerCase(extension);
 
     // http://en.wikipedia.org/wiki/Mime_types
--- a/OrthancServer/Plugins/Engine/PluginsManager.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancServer/Plugins/Engine/PluginsManager.cpp	Thu May 16 21:33:52 2024 +0200
@@ -307,7 +307,7 @@
       }
       else
       {
-        std::string extension = boost::filesystem::extension(it->path());
+        std::string extension = it->path().extension().string();
         Toolbox::ToLowerCase(extension);
 
         if (extension == PLUGIN_EXTENSION)
--- a/OrthancServer/Plugins/Samples/ModalityWorklists/Plugin.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancServer/Plugins/Samples/ModalityWorklists/Plugin.cpp	Thu May 16 21:33:52 2024 +0200
@@ -166,7 +166,7 @@
         if (type == fs::regular_file ||
             type == fs::reparse_file)   // cf. BitBucket issue #11
         {
-          std::string extension = fs::extension(it->path());
+          std::string extension = it->path().extension().string();
           std::transform(extension.begin(), extension.end(), extension.begin(), tolower);  // Convert to lowercase
 
           if (extension == ".wl")
--- a/OrthancServer/Plugins/Samples/MultitenantDicom/StoreRequestHandler.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancServer/Plugins/Samples/MultitenantDicom/StoreRequestHandler.cpp	Thu May 16 21:33:52 2024 +0200
@@ -38,10 +38,11 @@
                                      const std::string& calledAet)
 {
   std::string buffer;
+  std::string errorMessage;
 
-  if (!Orthanc::FromDcmtkBridge::SaveToMemoryBuffer(buffer, dicom))
+  if (!Orthanc::FromDcmtkBridge::SaveToMemoryBuffer(buffer, dicom, errorMessage))
   {
-    LOG(ERROR) << "Cannot write DICOM file to memory";
+    LOG(ERROR) << "Cannot write DICOM file to memory: " << errorMessage;
     return STATUS_STORE_Error_CannotUnderstand;
   }
 
--- a/OrthancServer/Sources/DicomInstanceToStore.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancServer/Sources/DicomInstanceToStore.cpp	Thu May 16 21:33:52 2024 +0200
@@ -132,9 +132,10 @@
       {
         buffer_.reset(new std::string);
         
-        if (!FromDcmtkBridge::SaveToMemoryBuffer(*buffer_, dataset_))
+        std::string errorMessage;
+        if (!FromDcmtkBridge::SaveToMemoryBuffer(*buffer_, dataset_, errorMessage))
         {
-          throw OrthancException(ErrorCode_InternalError, "Cannot write DICOM file to memory");
+          throw OrthancException(ErrorCode_InternalError, "Cannot write DICOM file to memory: " + errorMessage);
         }
       }
     }
--- a/OrthancServer/Sources/OrthancConfiguration.cpp	Sat May 11 15:43:07 2024 +0200
+++ b/OrthancServer/Sources/OrthancConfiguration.cpp	Thu May 16 21:33:52 2024 +0200
@@ -114,7 +114,7 @@
     {
       if (!is_directory(it->status()))
       {
-        std::string extension = boost::filesystem::extension(it->path());
+        std::string extension = it->path().extension().string();
         Toolbox::ToLowerCase(extension);
 
         if (extension == ".json")
--- a/TODO	Sat May 11 15:43:07 2024 +0200
+++ b/TODO	Thu May 16 21:33:52 2024 +0200
@@ -195,6 +195,11 @@
   https://groups.google.com/d/msg/orthanc-users/xD4d3mpc6ms/srF7E2goAAAJ
 * Support C-MOVE-CANCEL:
   https://groups.google.com/d/msg/orthanc-users/KnduYBFd06A/o86cl5SeCAAJ
+* Combine StudyDate + StudyTime in C-Find matching (also for the worklist plugin with 
+  ScheduledProcedureStartTime & Date).
+  We should first filter in SQL by StudyDate only, combine it with StudyTime into a single 
+  DateTime string and filter again in C++.
+  https://discourse.orthanc-server.org/t/performin-find-within-orthanc-for-time-frames/4704
 
 --------------------
 Internationalization