aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2018-04-17 16:26:20 -0700
committerRobert Schumacher <roschuma@microsoft.com>2018-04-19 10:40:06 -0700
commitfb0c047b4d78c3150d16e401f0714475a02009b5 (patch)
tree154e327cf43cfd177a2ce09e512eb3fd5378516c
parentb831381cf569436177ada02366c4850a665b8465 (diff)
downloadvcpkg-fb0c047b4d78c3150d16e401f0714475a02009b5.tar.gz
vcpkg-fb0c047b4d78c3150d16e401f0714475a02009b5.zip
[azure-storage-cpp] Support non-windows
-rw-r--r--ports/azure-storage-cpp/CONTROL2
-rw-r--r--ports/azure-storage-cpp/glibmm-cmake.patch13
-rw-r--r--ports/azure-storage-cpp/portfile.cmake3
-rw-r--r--ports/azure-storage-cpp/pplx-do-while.patch52
4 files changed, 69 insertions, 1 deletions
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<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))