From 08d545b4be7e41d451063a8f49d375a07d82d40e Mon Sep 17 00:00:00 2001
From: Greg Hogan <code@greghogan.com>
Date: Fri, 30 Apr 2021 14:02:11 +0000
Subject: [PATCH 09/12] gnu: Add aws-c-s3.

* gnu/packages/c.scm (aws-c-s3): New variable.
* gnu/packages/patches/aws-c-s3-cmake-prefix.patch,
gnu/packages/patches/aws-c-s3-disable-networking-tests.patch: New files.
* gnu/local.mk (dist_patch_DATA): Add them.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/c.scm                            |  31 ++++
 .../patches/aws-c-s3-cmake-prefix.patch       |  13 ++
 .../aws-c-s3-disable-networking-tests.patch   | 153 ++++++++++++++++++
 4 files changed, 199 insertions(+)
 create mode 100644 gnu/packages/patches/aws-c-s3-cmake-prefix.patch
 create mode 100644 gnu/packages/patches/aws-c-s3-disable-networking-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0220ff9391..a869396fe9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -872,6 +872,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/aws-c-http-disable-networking-tests.patch\
   %D%/packages/patches/aws-c-io-cmake-prefix.patch		\
   %D%/packages/patches/aws-c-io-disable-networking-tests.patch	\
+  %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/azr3.patch				\
   %D%/packages/patches/bash-reproducible-linux-pgrp-pipe.patch	\
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 94e731c9bf..7078eff4ad 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -803,3 +803,34 @@ currently limited to Huffman encoding and decoding.")
 authentication.")
     (home-page "https://github.com/awslabs/aws-c-auth")
     (license license:asl2.0)))
+
+(define-public aws-c-s3
+  (package
+    (name "aws-c-s3")
+    (version "0.1.19")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://github.com/awslabs/" name))
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1vkjd8dh99d8qsl7irnbkcdf9vjmcznx0jz186la0472z4h48wjj"))
+              (patches
+               (search-patches
+                "aws-c-s3-cmake-prefix.patch"
+                "aws-c-s3-disable-networking-tests.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       '("-DBUILD_SHARED_LIBS=ON")))
+    (propagated-inputs
+     `(("aws-c-auth" ,aws-c-auth)
+       ("aws-c-http" ,aws-c-http)))
+    (synopsis "Amazon Web Services client library for Amazon S3")
+    (description
+     "This library provides a C99 client implementation of the Simple Storage
+Service (S3) protocol for object storage.")
+    (home-page "https://github.com/awslabs/aws-c-s3")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/aws-c-s3-cmake-prefix.patch b/gnu/packages/patches/aws-c-s3-cmake-prefix.patch
new file mode 100644
index 0000000000..da3e4eb4a5
--- /dev/null
+++ b/gnu/packages/patches/aws-c-s3-cmake-prefix.patch
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -6,6 +6,10 @@ if (POLICY CMP0069)
+     cmake_policy(SET CMP0069 NEW) # Enable LTO/IPO if available in the compiler, see AwsCFlags
+ endif()
+ 
++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-c-s3-disable-networking-tests.patch b/gnu/packages/patches/aws-c-s3-disable-networking-tests.patch
new file mode 100644
index 0000000000..e8a3d8ed6a
--- /dev/null
+++ b/gnu/packages/patches/aws-c-s3-disable-networking-tests.patch
@@ -0,0 +1,153 @@
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -23,8 +23,8 @@ add_test_case(test_s3_upload_part_message_new)
+ add_test_case(test_s3_complete_multipart_message_new)
+ add_test_case(test_s3_abort_multipart_upload_message_new)
+ 
+-add_net_test_case(test_s3_client_create_destroy)
+-add_net_test_case(test_s3_client_max_active_connections_override)
++#add_net_test_case(test_s3_client_create_destroy)
++#add_net_test_case(test_s3_client_max_active_connections_override)
+ add_test_case(test_s3_client_get_max_active_connections)
+ add_test_case(test_s3_request_create_destroy)
+ add_test_case(test_s3_client_queue_requests)
+@@ -37,75 +37,75 @@ add_test_case(test_s3_client_update_connections_too_many_conns)
+ add_test_case(test_s3_client_update_connections_finish_result)
+ add_test_case(test_s3_client_update_connections_clean_up)
+ 
+-add_net_test_case(test_s3_vip_create_destroy)
+-add_net_test_case(test_s3_client_add_remove_vips)
+-add_net_test_case(test_s3_client_resolve_vips)
++#add_net_test_case(test_s3_vip_create_destroy)
++#add_net_test_case(test_s3_client_add_remove_vips)
++#add_net_test_case(test_s3_client_resolve_vips)
+ add_test_case(test_s3_client_set_vip_connection_warm)
+ add_test_case(test_s3_client_set_vip_connection_active)
+ 
+-add_net_test_case(test_s3_client_exceed_retries)
+-add_net_test_case(test_s3_client_acquire_connection_fail)
+-add_net_test_case(test_s3_meta_request_fail_prepare_request)
+-add_net_test_case(test_s3_meta_request_sign_request_fail)
+-add_net_test_case(test_s3_meta_request_send_request_finish_fail)
+-add_net_test_case(test_s3_auto_range_put_missing_upload_id)
++#add_net_test_case(test_s3_client_exceed_retries)
++#add_net_test_case(test_s3_client_acquire_connection_fail)
++#add_net_test_case(test_s3_meta_request_fail_prepare_request)
++#add_net_test_case(test_s3_meta_request_sign_request_fail)
++#add_net_test_case(test_s3_meta_request_send_request_finish_fail)
++#add_net_test_case(test_s3_auto_range_put_missing_upload_id)
+ 
+-add_net_test_case(test_s3_cancel_mpu_create_not_sent)
+-add_net_test_case(test_s3_cancel_mpu_create_completed)
+-add_net_test_case(test_s3_cancel_mpu_one_part_completed)
+-add_net_test_case(test_s3_cancel_mpu_all_parts_completed)
+-add_net_test_case(test_s3_cancel_mpd_nothing_sent)
+-add_net_test_case(test_s3_cancel_mpd_one_part_sent)
+-add_net_test_case(test_s3_cancel_mpd_one_part_completed)
+-add_net_test_case(test_s3_cancel_mpd_two_parts_completed)
+-add_net_test_case(test_s3_cancel_mpd_head_object_sent)
+-add_net_test_case(test_s3_cancel_mpd_head_object_completed)
+-add_net_test_case(test_s3_cancel_mpd_get_without_range_sent)
+-add_net_test_case(test_s3_cancel_mpd_get_without_range_completed)
++#add_net_test_case(test_s3_cancel_mpu_create_not_sent)
++#add_net_test_case(test_s3_cancel_mpu_create_completed)
++#add_net_test_case(test_s3_cancel_mpu_one_part_completed)
++#add_net_test_case(test_s3_cancel_mpu_all_parts_completed)
++#add_net_test_case(test_s3_cancel_mpd_nothing_sent)
++#add_net_test_case(test_s3_cancel_mpd_one_part_sent)
++#add_net_test_case(test_s3_cancel_mpd_one_part_completed)
++#add_net_test_case(test_s3_cancel_mpd_two_parts_completed)
++#add_net_test_case(test_s3_cancel_mpd_head_object_sent)
++#add_net_test_case(test_s3_cancel_mpd_head_object_completed)
++#add_net_test_case(test_s3_cancel_mpd_get_without_range_sent)
++#add_net_test_case(test_s3_cancel_mpd_get_without_range_completed)
+ 
+-add_net_test_case(test_s3_get_object_tls_disabled)
+-add_net_test_case(test_s3_get_object_tls_enabled)
+-add_net_test_case(test_s3_get_object_tls_default)
+-add_net_test_case(test_s3_get_object_less_than_part_size)
+-add_net_test_case(test_s3_get_object_empty_object)
+-add_net_test_case(test_s3_get_object_multiple)
+-add_net_test_case(test_s3_get_object_sse_kms)
+-add_net_test_case(test_s3_get_object_sse_aes256)
+-add_net_test_case(test_s3_no_signing)
+-add_net_test_case(test_s3_signing_override)
+-add_net_test_case(test_s3_put_object_tls_disabled)
+-add_net_test_case(test_s3_put_object_tls_enabled)
+-add_net_test_case(test_s3_put_object_tls_default)
+-add_net_test_case(test_s3_multipart_put_object_with_acl)
+-add_net_test_case(test_s3_put_object_multiple)
+-add_net_test_case(test_s3_put_object_less_than_part_size)
+-add_net_test_case(test_s3_put_object_empty_object)
+-add_net_test_case(test_s3_put_object_with_part_remainder)
+-add_net_test_case(test_s3_put_object_sse_kms)
+-add_net_test_case(test_s3_put_object_sse_kms_multipart)
+-add_net_test_case(test_s3_put_object_sse_aes256)
+-add_net_test_case(test_s3_put_object_sse_aes256_multipart)
+-add_net_test_case(test_s3_put_object_double_slashes)
+-add_net_test_case(test_s3_meta_request_default)
+-add_net_test_case(test_s3_put_object_fail_headers_callback)
+-add_net_test_case(test_s3_put_object_fail_body_callback)
+-add_net_test_case(test_s3_get_object_fail_headers_callback)
+-add_net_test_case(test_s3_get_object_fail_body_callback)
+-add_net_test_case(test_s3_default_fail_headers_callback)
+-add_net_test_case(test_s3_default_fail_body_callback)
+-add_net_test_case(test_s3_error_missing_file)
+-add_net_test_case(test_s3_existing_host_entry)
+-add_net_test_case(test_s3_put_fail_object_invalid_request)
+-add_net_test_case(test_s3_put_fail_object_inputstream_fail_reading)
+-add_net_test_case(test_s3_put_single_part_fail_object_inputstream_fail_reading)
+-add_net_test_case(test_s3_bad_endpoint)
+-add_net_test_case(test_s3_put_object_clamp_part_size)
+-add_net_test_case(test_s3_different_endpoints)
+-add_net_test_case(test_s3_auto_ranged_get_sending_user_agent)
+-add_net_test_case(test_s3_auto_ranged_put_sending_user_agent)
+-add_net_test_case(test_s3_default_sending_meta_request_user_agent)
+-add_net_test_case(test_s3_range_requests)
+-add_net_test_case(test_s3_not_satisfiable_range)
++#add_net_test_case(test_s3_get_object_tls_disabled)
++#add_net_test_case(test_s3_get_object_tls_enabled)
++#add_net_test_case(test_s3_get_object_tls_default)
++#add_net_test_case(test_s3_get_object_less_than_part_size)
++#add_net_test_case(test_s3_get_object_empty_object)
++#add_net_test_case(test_s3_get_object_multiple)
++#add_net_test_case(test_s3_get_object_sse_kms)
++#add_net_test_case(test_s3_get_object_sse_aes256)
++#add_net_test_case(test_s3_no_signing)
++#add_net_test_case(test_s3_signing_override)
++#add_net_test_case(test_s3_put_object_tls_disabled)
++#add_net_test_case(test_s3_put_object_tls_enabled)
++#add_net_test_case(test_s3_put_object_tls_default)
++#add_net_test_case(test_s3_multipart_put_object_with_acl)
++#add_net_test_case(test_s3_put_object_multiple)
++#add_net_test_case(test_s3_put_object_less_than_part_size)
++#add_net_test_case(test_s3_put_object_empty_object)
++#add_net_test_case(test_s3_put_object_with_part_remainder)
++#add_net_test_case(test_s3_put_object_sse_kms)
++#add_net_test_case(test_s3_put_object_sse_kms_multipart)
++#add_net_test_case(test_s3_put_object_sse_aes256)
++#add_net_test_case(test_s3_put_object_sse_aes256_multipart)
++#add_net_test_case(test_s3_put_object_double_slashes)
++#add_net_test_case(test_s3_meta_request_default)
++#add_net_test_case(test_s3_put_object_fail_headers_callback)
++#add_net_test_case(test_s3_put_object_fail_body_callback)
++#add_net_test_case(test_s3_get_object_fail_headers_callback)
++#add_net_test_case(test_s3_get_object_fail_body_callback)
++#add_net_test_case(test_s3_default_fail_headers_callback)
++#add_net_test_case(test_s3_default_fail_body_callback)
++#add_net_test_case(test_s3_error_missing_file)
++#add_net_test_case(test_s3_existing_host_entry)
++#add_net_test_case(test_s3_put_fail_object_invalid_request)
++#add_net_test_case(test_s3_put_fail_object_inputstream_fail_reading)
++#add_net_test_case(test_s3_put_single_part_fail_object_inputstream_fail_reading)
++#add_net_test_case(test_s3_bad_endpoint)
++#add_net_test_case(test_s3_put_object_clamp_part_size)
++#add_net_test_case(test_s3_different_endpoints)
++#add_net_test_case(test_s3_auto_ranged_get_sending_user_agent)
++#add_net_test_case(test_s3_auto_ranged_put_sending_user_agent)
++#add_net_test_case(test_s3_default_sending_meta_request_user_agent)
++#add_net_test_case(test_s3_range_requests)
++#add_net_test_case(test_s3_not_satisfiable_range)
+ 
+ add_test_case(test_s3_replace_quote_entities)
+ add_test_case(test_s3_parse_content_range_response_header)
-- 
2.33.0

