From c31527e457208fa54a179a4b2cf554625b11f74a Mon Sep 17 00:00:00 2001
From: Greg Hogan <code@greghogan.com>
Date: Fri, 30 Apr 2021 14:06:34 +0000
Subject: [PATCH 09/10] gnu: Add aws-crt-cpp.

* gnu/packages/cpp.scm (aws-crt-cpp): New variable.
* gnu/packages/patches/aws-crt-cpp-cmake-prefix.patch,
gnu/packages/patches/aws-crt-cpp-disable-networking-tests.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                  |  2 +
 gnu/packages/cpp.scm                          | 39 ++++++++++++++++
 .../patches/aws-crt-cpp-cmake-prefix.patch    | 13 ++++++
 ...aws-crt-cpp-disable-networking-tests.patch | 46 +++++++++++++++++++
 4 files changed, 100 insertions(+)
 create mode 100644 gnu/packages/patches/aws-crt-cpp-cmake-prefix.patch
 create mode 100644 gnu/packages/patches/aws-crt-cpp-disable-networking-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3b92a38030..f64bbd4054 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -848,6 +848,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/aws-c-s3-cmake-prefix.patch		\
   %D%/packages/patches/aws-c-s3-disable-networking-tests.patch	\
   %D%/packages/patches/aws-checksums-cmake-prefix.patch		\
+  %D%/packages/patches/aws-crt-cpp-cmake-prefix.patch		\
+  %D%/packages/patches/aws-crt-cpp-disable-networking-tests.patch	\
   %D%/packages/patches/azr3.patch				\
   %D%/packages/patches/bash-reproducible-linux-pgrp-pipe.patch	\
   %D%/packages/patches/bash-completion-directories.patch	\
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 3089094eb8..189f0b5132 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -821,6 +821,45 @@ of C++14 components that complements @code{std} and Boost.")
     (supported-systems '("aarch64-linux" "x86_64-linux"))
     (license license:asl2.0)))
 
+(define-public aws-crt-cpp
+  (let* ((commit "e7c13cd8c49c3cf073da1840ad8a14032e6ec89a")
+         (revision "1"))
+    (package
+      (name "aws-crt-cpp")
+      (version (git-version "0.8.4" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/awslabs/aws-crt-cpp")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1wga2b483cjqvay05q20vqfxbir4baqkdy7drfkv1y0k0nm6dp4z"))
+                (patches
+                 (search-patches
+                  "aws-crt-cpp-cmake-prefix.patch"
+                  "aws-crt-cpp-disable-networking-tests.patch"))))
+      (build-system cmake-build-system)
+      (arguments
+       '(#:configure-flags
+         '("-DBUILD_SHARED_LIBS=ON"
+           "-DBUILD_DEPS=OFF")))
+      (propagated-inputs
+       `(("aws-c-auth" ,aws-c-auth)
+         ("aws-c-cal" ,aws-c-cal)
+         ("aws-c-event-stream" ,aws-c-event-stream)
+         ("aws-c-http" ,aws-c-http)
+         ("aws-c-mqtt" ,aws-c-mqtt)
+         ("aws-c-s3" ,aws-c-s3)))
+      (synopsis "C++ wrapper for Amazon Web Services C libraries")
+      (description "The AWS Common Runtime (CRT) library provides a C++ wrapper
+implementation for the following @acronym{AWS,Amazon Web Services} C libraries:
+aws-c-auth, aws-c-cal, aws-c-common, aws-c-compression, aws-c-event-stream,
+aws-c-http, aws-c-io, aws-c-mqtt, aws-checksums, and s2n.")
+      (home-page "https://github.com/awslabs/aws-crt-cpp")
+      (license license:asl2.0))))
+
 (define-public aws-sdk-cpp
   (package
     (name "aws-sdk-cpp")
diff --git a/gnu/packages/patches/aws-crt-cpp-cmake-prefix.patch b/gnu/packages/patches/aws-crt-cpp-cmake-prefix.patch
new file mode 100644
index 0000000000..b45818875f
--- /dev/null
+++ b/gnu/packages/patches/aws-crt-cpp-cmake-prefix.patch
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,6 +39,10 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+ include(AwsCheckHeadersCxx)
+ include(CTest)
+ 
++if (DEFINED ENV{CMAKE_PREFIX_PATH})
++    set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
++endif()
++
+ if (DEFINED CMAKE_PREFIX_PATH)
+     file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
+ endif()
diff --git a/gnu/packages/patches/aws-crt-cpp-disable-networking-tests.patch b/gnu/packages/patches/aws-crt-cpp-disable-networking-tests.patch
new file mode 100644
index 0000000000..48aec3255b
--- /dev/null
+++ b/gnu/packages/patches/aws-crt-cpp-disable-networking-tests.patch
@@ -0,0 +1,46 @@
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -9,10 +9,10 @@ file(GLOB TESTS ${TEST_HDRS} ${TEST_SRC})
+ set(TEST_BINARY_NAME ${PROJECT_NAME}-tests)
+ 
+ add_test_case(EventLoopResourceSafety)
+-add_net_test_case(MqttClientResourceSafety)
++#add_net_test_case(MqttClientResourceSafety)
+ add_net_test_case(MqttClientNewConnectionUninitializedTlsContext)
+ add_test_case(ClientBootstrapResourceSafety)
+-add_net_test_case(TLSContextResourceSafety)
++#add_net_test_case(TLSContextResourceSafety)
+ add_net_test_case(TLSContextUninitializedNewConnectionOptions)
+ add_test_case(Base64RoundTrip)
+ add_test_case(DateTimeBinding)
+@@ -23,13 +23,13 @@ add_test_case(JsonExplicitNull)
+ add_test_case(SHA256ResourceSafety)
+ add_test_case(MD5ResourceSafety)
+ add_test_case(SHA256HMACResourceSafety)
+-add_net_test_case(HttpDownloadNoBackPressureHTTP1_1)
+-add_net_test_case(HttpDownloadNoBackPressureHTTP2)
+-add_net_test_case(HttpStreamUnActivated)
++#add_net_test_case(HttpDownloadNoBackPressureHTTP1_1)
++#add_net_test_case(HttpDownloadNoBackPressureHTTP2)
++#add_net_test_case(HttpStreamUnActivated)
+ add_net_test_case(IotPublishSubscribe)
+-add_net_test_case(HttpClientConnectionManagerResourceSafety)
+-add_net_test_case(HttpClientConnectionWithPendingAcquisitions)
+-add_net_test_case(HttpClientConnectionWithPendingAcquisitionsAndClosedConnections)
++#add_net_test_case(HttpClientConnectionManagerResourceSafety)
++#add_net_test_case(HttpClientConnectionWithPendingAcquisitions)
++#add_net_test_case(HttpClientConnectionWithPendingAcquisitionsAndClosedConnections)
+ add_test_case(DefaultResolution)
+ add_test_case(OptionalCopySafety)
+ add_test_case(OptionalMoveSafety)
+@@ -45,8 +45,8 @@ add_test_case(TestProviderStaticGet)
+ add_test_case(TestProviderEnvironmentGet)
+ add_test_case(TestProviderProfileGet)
+ add_test_case(TestProviderImdsGet)
+-add_test_case(TestProviderDefaultChainGet)
+-add_test_case(TestProviderDefaultChainManualTlsContextGet)
++#add_test_case(TestProviderDefaultChainGet)
++#add_test_case(TestProviderDefaultChainManualTlsContextGet)
+ add_test_case(TestProviderDelegateGet)
+ add_test_case(HttpRequestTestCreateDestroy)
+ add_test_case(Sigv4SigningTestCreateDestroy)
-- 
2.31.1

