# HG changeset patch # User Sebastien Jodogne # Date 1523456829 -7200 # Node ID db70f6c5fa4fb07431e84f5f43ff60a62100d4c7 # Parent 886230938339fb58cb4b672698b9f0775de85546 sync diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/Cache/SharedArchive.cpp --- a/Resources/Orthanc/Core/Cache/SharedArchive.cpp Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/Cache/SharedArchive.cpp Wed Apr 11 16:27:09 2018 +0200 @@ -34,7 +34,7 @@ #include "../PrecompiledHeaders.h" #include "SharedArchive.h" -#include "../SystemToolbox.h" +#include "../Toolbox.h" namespace Orthanc @@ -100,7 +100,7 @@ RemoveInternal(oldest); } - std::string id = SystemToolbox::GenerateUuid(); + std::string id = Toolbox::GenerateUuid(); RemoveInternal(id); // Should never be useful because of UUID archive_[id] = obj; lru_.Add(id); diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/DicomFormat/DicomTag.h --- a/Resources/Orthanc/Core/DicomFormat/DicomTag.h Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/DicomFormat/DicomTag.h Wed Apr 11 16:27:09 2018 +0200 @@ -201,4 +201,6 @@ static const DicomTag DICOM_TAG_FRAME_OF_REFERENCE_UID(0x0020, 0x0052); static const DicomTag DICOM_TAG_REFERENCED_FRAME_OF_REFERENCE_UID(0x3006, 0x0024); static const DicomTag DICOM_TAG_RELATED_FRAME_OF_REFERENCE_UID(0x3006, 0x00c2); + static const DicomTag DICOM_TAG_CURRENT_REQUESTED_PROCEDURE_EVIDENCE_SEQUENCE(0x0040, 0xa375); + static const DicomTag DICOM_TAG_REFERENCED_SERIES_SEQUENCE(0x0008, 0x1115); } diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/FileStorage/StorageAccessor.cpp --- a/Resources/Orthanc/Core/FileStorage/StorageAccessor.cpp Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/FileStorage/StorageAccessor.cpp Wed Apr 11 16:27:09 2018 +0200 @@ -37,7 +37,7 @@ #include "../Compression/ZlibCompressor.h" #include "../OrthancException.h" #include "../Toolbox.h" -#include "../SystemToolbox.h" +#include "../Toolbox.h" #if ORTHANC_ENABLE_CIVETWEB == 1 || ORTHANC_ENABLE_MONGOOSE == 1 # include "../HttpServer/HttpStreamTranscoder.h" @@ -51,7 +51,7 @@ CompressionType compression, bool storeMd5) { - std::string uuid = SystemToolbox::GenerateUuid(); + std::string uuid = Toolbox::GenerateUuid(); std::string md5; diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/SystemToolbox.cpp --- a/Resources/Orthanc/Core/SystemToolbox.cpp Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/SystemToolbox.cpp Wed Apr 11 16:27:09 2018 +0200 @@ -62,19 +62,6 @@ #endif -// Inclusions for UUID -// http://stackoverflow.com/a/1626302 - -extern "C" -{ -#if defined(_WIN32) -# include -#else -# include -#endif -} - - #include "Logging.h" #include "OrthancException.h" #include "Toolbox.h" @@ -539,28 +526,6 @@ } - std::string SystemToolbox::GenerateUuid() - { -#ifdef WIN32 - UUID uuid; - UuidCreate ( &uuid ); - - unsigned char * str; - UuidToStringA ( &uuid, &str ); - - std::string s( ( char* ) str ); - - RpcStringFreeA ( &str ); -#else - uuid_t uuid; - uuid_generate_random ( uuid ); - char s[37]; - uuid_unparse ( uuid, s ); -#endif - return s; - } - - static boost::posix_time::ptime GetNow(bool utc) { if (utc) diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/SystemToolbox.h --- a/Resources/Orthanc/Core/SystemToolbox.h Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/SystemToolbox.h Wed Apr 11 16:27:09 2018 +0200 @@ -93,8 +93,6 @@ FILE* OpenFile(const std::string& path, FileMode mode); - std::string GenerateUuid(); - std::string GetNowIsoString(bool utc); void GetNowDicom(std::string& date, diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/TemporaryFile.cpp --- a/Resources/Orthanc/Core/TemporaryFile.cpp Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/TemporaryFile.cpp Wed Apr 11 16:27:09 2018 +0200 @@ -52,7 +52,7 @@ #endif // We use UUID to create unique path to temporary files - std::string filename = "Orthanc-" + Orthanc::SystemToolbox::GenerateUuid(); + std::string filename = "Orthanc-" + Orthanc::Toolbox::GenerateUuid(); if (extension != NULL) { diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/Toolbox.cpp --- a/Resources/Orthanc/Core/Toolbox.cpp Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/Toolbox.cpp Wed Apr 11 16:27:09 2018 +0200 @@ -87,8 +87,94 @@ #endif +// Inclusions for UUID +// http://stackoverflow.com/a/1626302 + +extern "C" +{ +#if defined(_WIN32) +# include +#else +# include +#endif +} + + + namespace Orthanc { + void Toolbox::LinesIterator::FindEndOfLine() + { + lineEnd_ = lineStart_; + + while (lineEnd_ < content_.size() && + content_[lineEnd_] != '\n' && + content_[lineEnd_] != '\r') + { + lineEnd_ += 1; + } + } + + + Toolbox::LinesIterator::LinesIterator(const std::string& content) : + content_(content), + lineStart_(0) + { + FindEndOfLine(); + } + + + bool Toolbox::LinesIterator::GetLine(std::string& target) const + { + assert(lineStart_ <= content_.size() && + lineEnd_ <= content_.size() && + lineStart_ <= lineEnd_); + + if (lineStart_ == content_.size()) + { + return false; + } + else + { + target = content_.substr(lineStart_, lineEnd_ - lineStart_); + return true; + } + } + + + void Toolbox::LinesIterator::Next() + { + lineStart_ = lineEnd_; + + if (lineStart_ != content_.size()) + { + assert(content_[lineStart_] == '\r' || + content_[lineStart_] == '\n'); + + char second; + + if (content_[lineStart_] == '\r') + { + second = '\n'; + } + else + { + second = '\r'; + } + + lineStart_ += 1; + + if (lineStart_ < content_.size() && + content_[lineStart_] == second) + { + lineStart_ += 1; + } + + FindEndOfLine(); + } + } + + void Toolbox::ToUpperCase(std::string& s) { std::transform(s.begin(), s.end(), s.begin(), toupper); @@ -1376,4 +1462,65 @@ return boost::locale::conv::utf_to_utf(w); } #endif + + + std::string Toolbox::GenerateUuid() + { +#ifdef WIN32 + UUID uuid; + UuidCreate ( &uuid ); + + unsigned char * str; + UuidToStringA ( &uuid, &str ); + + std::string s( ( char* ) str ); + + RpcStringFreeA ( &str ); +#else + uuid_t uuid; + uuid_generate_random ( uuid ); + char s[37]; + uuid_unparse ( uuid, s ); +#endif + return s; + } } + + + +OrthancLinesIterator* OrthancLinesIterator_Create(const std::string& content) +{ + return reinterpret_cast(new Orthanc::Toolbox::LinesIterator(content)); +} + + +bool OrthancLinesIterator_GetLine(std::string& target, + const OrthancLinesIterator* iterator) +{ + if (iterator != NULL) + { + return reinterpret_cast(iterator)->GetLine(target); + } + else + { + return false; + } +} + + +void OrthancLinesIterator_Next(OrthancLinesIterator* iterator) +{ + if (iterator != NULL) + { + reinterpret_cast(iterator)->Next(); + } +} + + +void OrthancLinesIterator_Free(OrthancLinesIterator* iterator) +{ + if (iterator != NULL) + { + delete reinterpret_cast(iterator); + } +} diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Core/Toolbox.h --- a/Resources/Orthanc/Core/Toolbox.h Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Core/Toolbox.h Wed Apr 11 16:27:09 2018 +0200 @@ -79,6 +79,24 @@ namespace Toolbox { + class LinesIterator + { + private: + const std::string& content_; + size_t lineStart_; + size_t lineEnd_; + + void FindEndOfLine(); + + public: + LinesIterator(const std::string& content); + + bool GetLine(std::string& target) const; + + void Next(); + }; + + void ToUpperCase(std::string& s); // Inplace version void ToLowerCase(std::string& s); // Inplace version @@ -214,5 +232,28 @@ std::string ToUpperCaseWithAccents(const std::string& source); #endif + + std::string GenerateUuid(); } } + + + + +/** + * The plain C, opaque data structure "OrthancLinesIterator" is a thin + * wrapper around Orthanc::Toolbox::LinesIterator, and is only used by + * "../Resources/WebAssembly/dcdict.cc", in order to avoid code + * duplication + **/ + +struct OrthancLinesIterator; + +OrthancLinesIterator* OrthancLinesIterator_Create(const std::string& content); + +bool OrthancLinesIterator_GetLine(std::string& target, + const OrthancLinesIterator* iterator); + +void OrthancLinesIterator_Next(OrthancLinesIterator* iterator); + +void OrthancLinesIterator_Free(OrthancLinesIterator* iterator); diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/NEWS --- a/Resources/Orthanc/NEWS Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/NEWS Wed Apr 11 16:27:09 2018 +0200 @@ -29,13 +29,16 @@ * Orthanc now uses UTC (universal time) instead of local time in its database * Fix to allow creating DICOM instances with empty Specific Character Set (0008,0005) -* Upgrade to curl 7.57.0 for static and Windows builds * Support of Linux Standard Base * Static linking against libuuid (from e2fsprogs) * Fix static build on CentOS 6 -* Upgrade to JsonCpp 1.8.4 for static builds * Possibility of using JsonCpp 0.10.6 if the compiler does not support C++11 with the "-DUSE_LEGACY_JSONCPP=ON" CMake option +* Upgraded dependencies for static and Windows builds: + - boost 1.66.0 + - curl 7.57.0 + - jsoncpp 1.8.4 + - zlib 1.2.11 Version 1.3.1 (2017-11-29) diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/CMake/BoostConfiguration.cmake --- a/Resources/Orthanc/Resources/CMake/BoostConfiguration.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/CMake/BoostConfiguration.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -53,9 +53,9 @@ ## Parameters for static compilation of Boost ## - set(BOOST_NAME boost_1_65_1) - set(BOOST_BCP_SUFFIX bcpdigest-1.3.1) - set(BOOST_MD5 "92c9c603e56bbd7a450a305f08747d90") + set(BOOST_NAME boost_1_66_0) + set(BOOST_BCP_SUFFIX bcpdigest-1.3.2) + set(BOOST_MD5 "e509e66140e8f2fd4d326b0052825f52") set(BOOST_URL "http://www.orthanc-server.com/downloads/third-party/${BOOST_NAME}_${BOOST_BCP_SUFFIX}.tar.gz") set(BOOST_SOURCES_DIR ${CMAKE_BINARY_DIR}/${BOOST_NAME}) @@ -97,11 +97,13 @@ ) if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") - add_definitions(-DBOOST_SYSTEM_USE_STRERROR=1) + add_definitions( + -DBOOST_SYSTEM_USE_STRERROR=1 + ) execute_process( COMMAND ${PATCH_EXECUTABLE} -p0 -N -i - ${ORTHANC_ROOT}/Resources/Patches/boost-1.65.1-linux-standard-base.patch + ${ORTHANC_ROOT}/Resources/Patches/boost-1.66.0-linux-standard-base.patch WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE Failure ) @@ -145,6 +147,7 @@ ) elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + # No support for threads in WebAssembly else() message(FATAL_ERROR "Support your platform here") @@ -254,7 +257,8 @@ CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "PNaCl" OR CMAKE_SYSTEM_NAME STREQUAL "NaCl32" OR - CMAKE_SYSTEM_NAME STREQUAL "NaCl64") + CMAKE_SYSTEM_NAME STREQUAL "NaCl64" OR + CMAKE_SYSTEM_NAME STREQUAL "Emscripten") # For WebAssembly or asm.js list(APPEND BOOST_SOURCES ${BOOST_SOURCES_DIR}/libs/locale/src/posix/codecvt.cpp ${BOOST_SOURCES_DIR}/libs/locale/src/posix/collate.cpp diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/CMake/Compiler.cmake --- a/Resources/Orthanc/Resources/CMake/Compiler.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/CMake/Compiler.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -174,6 +174,12 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") message("Building using Emscripten (for WebAssembly or asm.js targets)") + # The BINARYEN_TRAP_MODE specifies what to do when divisions per + # zero (and similar conditions like integer overflows) are + # encountered: The "clamp" mode avoids throwing errors, as they + # cannot be properly catched by "try {} catch (...)" constructions. + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -s BINARYEN_TRAP_MODE='\"clamp\"'") + else() message(FATAL_ERROR "Support your platform here") endif() diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/CMake/OrthancFrameworkConfiguration.cmake --- a/Resources/Orthanc/Resources/CMake/OrthancFrameworkConfiguration.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/CMake/OrthancFrameworkConfiguration.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -282,10 +282,6 @@ ${ORTHANC_ROOT}/Core/Compression/GzipCompressor.cpp ${ORTHANC_ROOT}/Core/Compression/ZipWriter.cpp ${ORTHANC_ROOT}/Core/Compression/ZlibCompressor.cpp - - # This is the minizip distribution to create ZIP files using zlib - ${ORTHANC_ROOT}/Resources/ThirdParty/minizip/ioapi.c - ${ORTHANC_ROOT}/Resources/ThirdParty/minizip/zip.c ) endif() @@ -339,7 +335,14 @@ ## if (ENABLE_LOCALE) - include(${CMAKE_CURRENT_LIST_DIR}/LibIconvConfiguration.cmake) + if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + # In WebAssembly or asm.js, we rely on the version of iconv that + # is shipped with the stdlib + unset(USE_BOOST_ICONV CACHE) + else() + include(${CMAKE_CURRENT_LIST_DIR}/LibIconvConfiguration.cmake) + endif() + add_definitions(-DORTHANC_ENABLE_LOCALE=1) endif() @@ -359,10 +362,7 @@ ##################################################################### include(${CMAKE_CURRENT_LIST_DIR}/JsonCppConfiguration.cmake) - -if (NOT ORTHANC_SANDBOXED) - include(${CMAKE_CURRENT_LIST_DIR}/UuidConfiguration.cmake) -endif() +include(${CMAKE_CURRENT_LIST_DIR}/UuidConfiguration.cmake) # We put Boost as the last dependency, as it is the heaviest to # configure, which allows to quickly spot problems when configuring @@ -396,7 +396,6 @@ endif() set(ORTHANC_DICOM_SOURCES_INTERNAL - ${ORTHANC_ROOT}/Core/DicomParsing/DicomDirWriter.cpp ${ORTHANC_ROOT}/Core/DicomParsing/DicomModification.cpp ${ORTHANC_ROOT}/Core/DicomParsing/FromDcmtkBridge.cpp ${ORTHANC_ROOT}/Core/DicomParsing/ParsedDicomFile.cpp @@ -406,6 +405,12 @@ ${ORTHANC_ROOT}/Core/DicomParsing/Internals/DicomImageDecoder.cpp ) + if (NOT ORTHANC_SANDBOXED) + list(APPEND ORTHANC_CORE_SOURCES_INTERNAL + ${ORTHANC_ROOT}/Core/DicomParsing/DicomDirWriter.cpp + ) + endif() + if (ENABLE_DCMTK_NETWORKING) add_definitions(-DORTHANC_ENABLE_DCMTK_NETWORKING=1) list(APPEND ORTHANC_DICOM_SOURCES_INTERNAL @@ -536,6 +541,16 @@ ${ORTHANC_ROOT}/Resources/ThirdParty/base64/base64.cpp ) + +if (ENABLE_ZLIB) + list(APPEND ORTHANC_CORE_SOURCES_DEPENDENCIES + # This is the minizip distribution to create ZIP files using zlib + ${ORTHANC_ROOT}/Resources/ThirdParty/minizip/ioapi.c + ${ORTHANC_ROOT}/Resources/ThirdParty/minizip/zip.c + ) +endif() + + set(ORTHANC_CORE_SOURCES ${ORTHANC_CORE_SOURCES_INTERNAL} ${ORTHANC_CORE_SOURCES_DEPENDENCIES} diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/CMake/UuidConfiguration.cmake --- a/Resources/Orthanc/Resources/CMake/UuidConfiguration.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/CMake/UuidConfiguration.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -39,7 +39,7 @@ check_include_file("sys/un.h" HAVE_SYS_UN_H) check_include_file("unistd.h" HAVE_UNISTD_H) - If (NOT HAVE_NET_IF_H) # This is the case of OpenBSD + if (NOT HAVE_NET_IF_H) # This is the case of OpenBSD unset(HAVE_NET_IF_H CACHE) check_include_files("sys/socket.h;net/if.h" HAVE_NET_IF_H) endif() @@ -49,7 +49,8 @@ check_include_files("sys/socket.h;netinet/tcp.h" HAVE_NETINET_TCP_H) endif() - file(WRITE ${E2FSPROGS_SOURCES_DIR}/lib/uuid/config.h.cmake " + if (NOT EXISTS ${E2FSPROGS_SOURCES_DIR}/lib/uuid/config.h) + file(WRITE ${E2FSPROGS_SOURCES_DIR}/lib/uuid/config.h.cmake " #cmakedefine HAVE_NET_IF_H \@HAVE_NET_IF_H\@ #cmakedefine HAVE_NET_IF_DL_H \@HAVE_NET_IF_DL_H\@ #cmakedefine HAVE_NETINET_IN_H \@HAVE_NETINET_IN_H\@ @@ -64,26 +65,23 @@ #cmakedefine HAVE_SYS_UN_H \@HAVE_SYS_UN_H\@ #cmakedefine HAVE_UNISTD_H \@HAVE_UNISTD_H\@ ") - + endif() + configure_file( ${E2FSPROGS_SOURCES_DIR}/lib/uuid/config.h.cmake ${E2FSPROGS_SOURCES_DIR}/lib/uuid/config.h ) - - + configure_file( ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid.h.in ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid.h ) - file(WRITE - ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid_types.h - "#include \n") - - #configure_file( - # ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid_types.h.in - # ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid_types.h - # ) + if (NOT EXISTS ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid_types.h) + file(WRITE + ${E2FSPROGS_SOURCES_DIR}/lib/uuid/uuid_types.h + "#include \n") + endif() source_group(ThirdParty\\uuid REGULAR_EXPRESSION ${E2FSPROGS_SOURCES_DIR}/.*) diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/CMake/ZlibConfiguration.cmake --- a/Resources/Orthanc/Resources/CMake/ZlibConfiguration.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/CMake/ZlibConfiguration.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -1,7 +1,7 @@ if (STATIC_BUILD OR NOT USE_SYSTEM_ZLIB) - SET(ZLIB_SOURCES_DIR ${CMAKE_BINARY_DIR}/zlib-1.2.7) - SET(ZLIB_URL "http://www.orthanc-server.com/downloads/third-party/zlib-1.2.7.tar.gz") - SET(ZLIB_MD5 "60df6a37c56e7c1366cca812414f7b85") + SET(ZLIB_SOURCES_DIR ${CMAKE_BINARY_DIR}/zlib-1.2.11) + SET(ZLIB_URL "http://www.orthanc-server.com/downloads/third-party/zlib-1.2.11.tar.gz") + SET(ZLIB_MD5 "1c9f62f0778697a09d36121ead88e08e") DownloadPackage(${ZLIB_MD5} ${ZLIB_URL} "${ZLIB_SOURCES_DIR}") diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/LinuxStandardBaseToolchain.cmake --- a/Resources/Orthanc/Resources/LinuxStandardBaseToolchain.cmake Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/Orthanc/Resources/LinuxStandardBaseToolchain.cmake Wed Apr 11 16:27:09 2018 +0200 @@ -1,4 +1,4 @@ -# LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake +# LSB_CC=gcc-4.8 LSB_CXX=g++-4.8 cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../Resources/LinuxStandardBaseToolchain.cmake -DUSE_LEGACY_JSONCPP=ON INCLUDE(CMakeForceCompiler) diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/Patches/boost-1.65.1-linux-standard-base.patch --- a/Resources/Orthanc/Resources/Patches/boost-1.65.1-linux-standard-base.patch Wed Mar 28 11:29:13 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -diff -urEb boost_1_65_1.orig/boost/move/adl_move_swap.hpp boost_1_65_1/boost/move/adl_move_swap.hpp ---- boost_1_65_1.orig/boost/move/adl_move_swap.hpp 2017-11-08 17:43:20.000000000 +0100 -+++ boost_1_65_1/boost/move/adl_move_swap.hpp 2018-01-02 15:34:48.829052917 +0100 -@@ -28,6 +28,8 @@ - //Try to avoid including , as it's quite big - #if defined(_MSC_VER) && defined(BOOST_DINKUMWARE_STDLIB) - #include //Dinkum libraries define std::swap in utility which is lighter than algorithm -+#elif defined(__LSB_VERSION__) -+# include - #elif defined(BOOST_GNU_STDLIB) - //For non-GCC compilers, where GNUC version is not very reliable, or old GCC versions - //use the good old stl_algobase header, which is quite lightweight diff -r 886230938339 -r db70f6c5fa4f Resources/Orthanc/Resources/Patches/boost-1.66.0-linux-standard-base.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Orthanc/Resources/Patches/boost-1.66.0-linux-standard-base.patch Wed Apr 11 16:27:09 2018 +0200 @@ -0,0 +1,13 @@ +diff -urEb boost_1_66_0.orig/boost/move/adl_move_swap.hpp boost_1_66_0/boost/move/adl_move_swap.hpp +--- boost_1_66_0.orig/boost/move/adl_move_swap.hpp 2018-04-11 11:56:16.761768726 +0200 ++++ boost_1_66_0/boost/move/adl_move_swap.hpp 2018-04-11 11:57:01.073881330 +0200 +@@ -28,6 +28,8 @@ + //Try to avoid including , as it's quite big + #if defined(_MSC_VER) && defined(BOOST_DINKUMWARE_STDLIB) + #include //Dinkum libraries define std::swap in utility which is lighter than algorithm ++#elif defined(__LSB_VERSION__) ++# include + #elif defined(BOOST_GNU_STDLIB) + //For non-GCC compilers, where GNUC version is not very reliable, or old GCC versions + //use the good old stl_algobase header, which is quite lightweight +Only in boost_1_66_0/boost/move: adl_move_swap.hpp~ diff -r 886230938339 -r db70f6c5fa4f Resources/SyncOrthancFolder.py --- a/Resources/SyncOrthancFolder.py Wed Mar 28 11:29:13 2018 +0200 +++ b/Resources/SyncOrthancFolder.py Wed Apr 11 16:27:09 2018 +0200 @@ -152,7 +152,7 @@ 'Resources/MinGW-W64-Toolchain32.cmake', 'Resources/MinGW-W64-Toolchain64.cmake', 'Resources/MinGWToolchain.cmake', - 'Resources/Patches/boost-1.65.1-linux-standard-base.patch', + 'Resources/Patches/boost-1.66.0-linux-standard-base.patch', 'Resources/Patches/curl-7.57.0-cmake.patch', 'Resources/Patches/dcmtk-3.6.2-linux-standard-base.patch', 'Resources/ThirdParty/VisualStudio/stdint.h',