[azure-storage-cpp] Support non-windows

This commit is contained in:
Robert Schumacher 2018-04-17 16:26:20 -07:00
parent b831381cf5
commit fb0c047b4d
4 changed files with 69 additions and 1 deletions

View File

@ -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/

View File

@ -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

View File

@ -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
)

View File

@ -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<executor_impl>(command, options, context);
- return pplx::details::do_while([instance]() -> pplx::task<bool>
+ return details::_do_while([instance]() -> pplx::task<bool>
{
// 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<class F, class T = bool>
+ pplx::task<T> _do_while(F func)
+ {
+ pplx::task<T> first = func();
+ return first.then([=](bool guard) -> pplx::task<T> {
+ if (guard)
+ return azure::storage::core::details::_do_while<F,T>(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<utility::size64_t>::max()) ? std::make_shared<utility::size64_t>(length) : nullptr;
auto total_ptr = std::make_shared<utility::size64_t>(0);
- return pplx::details::do_while([istream, obuffer, buffer_size, length_ptr, total_ptr, max_length] () -> pplx::task<bool>
+ return azure::storage::core::details::_do_while([istream, obuffer, buffer_size, length_ptr, total_ptr, max_length] () -> pplx::task<bool>
{
size_t read_length = buffer_size;
if ((length_ptr != nullptr) && (*length_ptr < read_length))