diff --git a/ports/azure-storage-cpp/CONTROL b/ports/azure-storage-cpp/CONTROL index 0da717ba7..c68552bba 100644 --- a/ports/azure-storage-cpp/CONTROL +++ b/ports/azure-storage-cpp/CONTROL @@ -1,5 +1,5 @@ Source: azure-storage-cpp Version: 3.2.1 -Build-Depends: cpprestsdk, atlmfc +Build-Depends: cpprestsdk, atlmfc (windows), boost-log (!windows&!uwp), boost-locale (!windows&!uwp), glibmm (!windows&!uwp), libxmlpp (!windows&!uwp), libuuid (!windows&!uwp) Description: Microsoft Azure Storage Client SDK for C++ A client library for working with Microsoft Azure storage services including blobs, files, tables, and queues. This client library enables working with the Microsoft Azure storage services which include the blob service for storing binary and text data, the file service for storing binary and text data, the table service for storing structured non-relational data, and the queue service for storing messages that may be accessed by a client. Microsoft Azure Storage team's blog - http://blogs.msdn.com/b/windowsazurestorage/ diff --git a/ports/azure-storage-cpp/glibmm-cmake.patch b/ports/azure-storage-cpp/glibmm-cmake.patch new file mode 100644 index 000000000..4d3e4a8cd --- /dev/null +++ b/ports/azure-storage-cpp/glibmm-cmake.patch @@ -0,0 +1,13 @@ +diff --git a/Microsoft.WindowsAzure.Storage/cmake/Modules/FindGlibmm.cmake b/Microsoft.WindowsAzure.Storage/cmake/Modules/FindGlibmm.cmake +index 79a4bcb..fe130bd 100644 +--- a/Microsoft.WindowsAzure.Storage/cmake/Modules/FindGlibmm.cmake ++++ b/Microsoft.WindowsAzure.Storage/cmake/Modules/FindGlibmm.cmake +@@ -36,7 +36,7 @@ find_path(GlibmmConfig_INCLUDE_DIR + ) + + find_library(Glibmm_LIBRARY +- NAMES glibmm-2.4 ++ NAMES glibmm glibmm-2.4 + PATHS + ${Glibmm_PKGCONF_LIBRARY_DIRS} + /usr diff --git a/ports/azure-storage-cpp/portfile.cmake b/ports/azure-storage-cpp/portfile.cmake index edac1e2a2..2f8e921a5 100644 --- a/ports/azure-storage-cpp/portfile.cmake +++ b/ports/azure-storage-cpp/portfile.cmake @@ -18,11 +18,14 @@ vcpkg_apply_patches( ${CMAKE_CURRENT_LIST_DIR}/cmake.patch ${CMAKE_CURRENT_LIST_DIR}/static-builds.patch ${CMAKE_CURRENT_LIST_DIR}/support-cpprest-findpackage.patch + ${CMAKE_CURRENT_LIST_DIR}/glibmm-cmake.patch + ${CMAKE_CURRENT_LIST_DIR}/pplx-do-while.patch ) vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH}/Microsoft.WindowsAzure.Storage OPTIONS + -DCMAKE_FIND_FRAMEWORK=LAST -DBUILD_TESTS=OFF -DBUILD_SAMPLES=OFF ) diff --git a/ports/azure-storage-cpp/pplx-do-while.patch b/ports/azure-storage-cpp/pplx-do-while.patch new file mode 100644 index 000000000..0c2163442 --- /dev/null +++ b/ports/azure-storage-cpp/pplx-do-while.patch @@ -0,0 +1,52 @@ +diff --git a/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h b/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h +index 756163d..6fbfd44 100644 +--- a/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h ++++ b/Microsoft.WindowsAzure.Storage/includes/wascore/executor.h +@@ -366,7 +366,7 @@ namespace azure { namespace storage { namespace core { + // TODO: Reduce usage of auto variable types + + auto instance = std::make_shared(command, options, context); +- return pplx::details::do_while([instance]() -> pplx::task ++ return details::_do_while([instance]() -> pplx::task + { + // 0. Begin request + instance->validate_location_mode(); +diff --git a/Microsoft.WindowsAzure.Storage/includes/wascore/util.h b/Microsoft.WindowsAzure.Storage/includes/wascore/util.h +index f3401f2..6a6aa48 100644 +--- a/Microsoft.WindowsAzure.Storage/includes/wascore/util.h ++++ b/Microsoft.WindowsAzure.Storage/includes/wascore/util.h +@@ -127,6 +127,21 @@ namespace azure { namespace storage { namespace core { + }; + #endif + ++ namespace details ++ { ++ template ++ pplx::task _do_while(F func) ++ { ++ pplx::task first = func(); ++ return first.then([=](bool guard) -> pplx::task { ++ if (guard) ++ return azure::storage::core::details::_do_while(func); ++ else ++ return first; ++ }); ++ } ++ } ++ + }}} // namespace azure::storage::core + + #pragma pop_macro("max") +diff --git a/Microsoft.WindowsAzure.Storage/src/util.cpp b/Microsoft.WindowsAzure.Storage/src/util.cpp +index dd2250a..b8d1341 100644 +--- a/Microsoft.WindowsAzure.Storage/src/util.cpp ++++ b/Microsoft.WindowsAzure.Storage/src/util.cpp +@@ -98,7 +98,7 @@ namespace azure { namespace storage { namespace core { + auto obuffer = ostream.streambuf(); + auto length_ptr = (length != std::numeric_limits::max()) ? std::make_shared(length) : nullptr; + auto total_ptr = std::make_shared(0); +- return pplx::details::do_while([istream, obuffer, buffer_size, length_ptr, total_ptr, max_length] () -> pplx::task ++ return azure::storage::core::details::_do_while([istream, obuffer, buffer_size, length_ptr, total_ptr, max_length] () -> pplx::task + { + size_t read_length = buffer_size; + if ((length_ptr != nullptr) && (*length_ptr < read_length))