orthanc/boost.patch

234 lines
8.9 KiB
Diff
Raw Normal View History

# HG changeset patch
# User Alain Mazy <am@orthanc.team>
# Date 1727274427 -7200
# Node ID 2b429588de28773d4aa062b3eb78c64663d7cbd2
# Parent 16df205057106f4246107cfe45710e56324007e8
fix support for Boost 1.86
diff -r 16df20505710 -r 2b429588de28 OrthancFramework/Resources/CMake/BoostConfiguration.cmake
--- a/OrthancFramework/Resources/CMake/BoostConfiguration.cmake Tue Sep 24 09:26:42 2024 +0200
+++ b/OrthancFramework/Resources/CMake/BoostConfiguration.cmake Wed Sep 25 16:27:07 2024 +0200
@@ -91,10 +91,10 @@
## Parameters for static compilation of Boost
##
- 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_NAME boost_1_86_0)
+ set(BOOST_VERSION 1.86.0)
+ set(BOOST_BCP_SUFFIX bcpdigest-1.12.5)
+ set(BOOST_MD5 "20b9c325c0dde830889ee75a9e64ded8")
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})
@@ -115,7 +115,7 @@
if (FirstRun)
execute_process(
COMMAND ${PATCH_EXECUTABLE} -p0 -N -i
- ${CMAKE_CURRENT_LIST_DIR}/../Patches/boost-1.85.0-emscripten.patch
+ ${CMAKE_CURRENT_LIST_DIR}/../Patches/boost-1.86.0-emscripten.patch
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
RESULT_VARIABLE Failure
)
diff -r 16df20505710 -r 2b429588de28 OrthancFramework/Resources/CMake/BoostConfiguration.sh
--- a/OrthancFramework/Resources/CMake/BoostConfiguration.sh Tue Sep 24 09:26:42 2024 +0200
+++ b/OrthancFramework/Resources/CMake/BoostConfiguration.sh Wed Sep 25 16:27:07 2024 +0200
@@ -27,9 +27,10 @@
## - Orthanc 1.12.2: Boost 1.83.0
## - Orthanc 1.12.3: Boost 1.84.0
## - Orthanc > 1.12.3: Boost 1.85.0
+## - Orthanc 1.12.5: Boost 1.86.0
-BOOST_VERSION=1_85_0
-ORTHANC_VERSION=1.12.4
+BOOST_VERSION=1_86_0
+ORTHANC_VERSION=1.12.5
rm -rf /tmp/boost_${BOOST_VERSION}
rm -rf /tmp/bcp/boost_${BOOST_VERSION}
diff -r 16df20505710 -r 2b429588de28 OrthancFramework/Resources/Patches/boost-1.86.0-emscripten.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancFramework/Resources/Patches/boost-1.86.0-emscripten.patch Wed Sep 25 16:27:07 2024 +0200
@@ -0,0 +1,127 @@
+diff -urEb boost_1_86_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp boost_1_86_0/libs/locale/src/boost/locale/shared/date_time.cpp
+--- boost_1_86_0.orig/libs/locale/src/boost/locale/shared/date_time.cpp 2024-09-25 15:46:01.000000000 +0200
++++ boost_1_86_0/libs/locale/src/boost/locale/shared/date_time.cpp 2024-09-25 15:58:51.306131987 +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,7 +425,7 @@
+ return boost::exchange(tz_id(), new_id);
+ }
+ } // namespace time_zone
+-
++#endif
+ }} // namespace boost::locale
+
+ // boostinspect:nominmax
+diff -urEb boost_1_86_0.orig/libs/locale/src/boost/locale/shared/generator.cpp boost_1_86_0/libs/locale/src/boost/locale/shared/generator.cpp
+--- boost_1_86_0.orig/libs/locale/src/boost/locale/shared/generator.cpp 2024-09-25 15:46:01.000000000 +0200
++++ boost_1_86_0/libs/locale/src/boost/locale/shared/generator.cpp 2024-09-25 16:00:07.756233916 +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,8 +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 +104,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 +131,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_86_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp boost_1_86_0/libs/locale/src/boost/locale/shared/localization_backend.cpp
+--- boost_1_86_0.orig/libs/locale/src/boost/locale/shared/localization_backend.cpp 2024-09-25 15:46:01.000000000 +0200
++++ boost_1_86_0/libs/locale/src/boost/locale/shared/localization_backend.cpp 2024-09-25 16:01:09.196820495 +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);
+ }
+
diff -r 16df20505710 -r 2b429588de28 OrthancFramework/Sources/Toolbox.cpp
--- a/OrthancFramework/Sources/Toolbox.cpp Tue Sep 24 09:26:42 2024 +0200
+++ b/OrthancFramework/Sources/Toolbox.cpp Wed Sep 25 16:27:07 2024 +0200
@@ -812,14 +812,32 @@
sha1.process_bytes(data, size);
}
+#if BOOST_VERSION >= 108600
+ unsigned char digest[20];
+
+ // Sanity check for the memory layout: A SHA-1 digest is 160 bits wide
+ assert(sizeof(digest) == (160 / 8));
+ assert(sizeof(boost::uuids::detail::sha1::digest_type) == 20);
+
+ // From Boost 1.86, digest_type is "unsigned char[20]" while it was "unsigned int[5]"" in previous versions.
+ // Always perform the cast even if it is useless for Boost < 1.86
+ sha1.get_digest(digest);
+
+ result.resize(8 * 5 + 4);
+ sprintf(&result[0], "%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x",
+ digest[0], digest[1], digest[2], digest[3],
+ digest[4], digest[5], digest[6], digest[7],
+ digest[8], digest[9], digest[10], digest[11],
+ digest[12], digest[13], digest[14], digest[15],
+ digest[16], digest[17], digest[18], digest[19]);
+
+#else
unsigned int digest[5];
// Sanity check for the memory layout: A SHA-1 digest is 160 bits wide
assert(sizeof(unsigned int) == 4 && sizeof(digest) == (160 / 8));
assert(sizeof(boost::uuids::detail::sha1::digest_type) == 20);
-
- // From Boost 1.86, digest_type is "unsigned char[20]" while it was "unsigned int[5]"" in previous versions.
- // Always perform the cast even if it is useless for Boost < 1.86
- sha1.get_digest(*(reinterpret_cast<boost::uuids::detail::sha1::digest_type*>(digest)));
+
+ sha1.get_digest(digest));
result.resize(8 * 5 + 4);
sprintf(&result[0], "%08x-%08x-%08x-%08x-%08x",
@@ -828,6 +846,9 @@
digest[2],
digest[3],
digest[4]);
+
+#endif
+
}
void Toolbox::ComputeSHA1(std::string& result,