summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/haskell-apps.scm4
-rw-r--r--gnu/packages/patches/git-annex-S3v4.patch77
3 files changed, 81 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index e73f1c7bbb..fb2e90b413 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -974,6 +974,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ghostscript-no-header-id.patch		\
   %D%/packages/patches/ghostscript-no-header-uuid.patch		\
   %D%/packages/patches/ghostscript-no-header-creationdate.patch \
+  %D%/packages/patches/git-annex-S3v4.patch			\
   %D%/packages/patches/glib-tests-timer.patch			\
   %D%/packages/patches/glibc-CVE-2015-5180.patch		\
   %D%/packages/patches/glibc-CVE-2015-7547.patch		\
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 4785ebaca3..13c8bbcf89 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015 John Soo <jsoo1@asu.edu>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
 ;;; Copyright © 2020 Brian Leung <bkleung89@gmail.com>
@@ -37,6 +37,7 @@
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system haskell)
+  #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages gl)
@@ -347,6 +348,7 @@ to @code{cabal repl}).")
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
+       (patches (search-patches "git-annex-S3v4.patch"))
        (sha256
         (base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl"))))
     (build-system haskell-build-system)
diff --git a/gnu/packages/patches/git-annex-S3v4.patch b/gnu/packages/patches/git-annex-S3v4.patch
new file mode 100644
index 0000000000..9f7cea329e
--- /dev/null
+++ b/gnu/packages/patches/git-annex-S3v4.patch
@@ -0,0 +1,77 @@
+From the upstream commit, with the changes to CHANGELOG and the docs
+folder removed.
+
+From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joeyh@joeyh.name>
+Date: Thu, 7 May 2020 13:18:11 -0400
+Subject: [PATCH] S3: Support signature=v4
+
+To use S3 Signature Version 4. Some S3 services seem to require v4, while
+others may only support v2, which remains the default.
+
+I'm also not sure if v4 works correctly in all cases, there is this
+upstream bug report: https://github.com/aristidb/aws/issues/262
+I've only tested it against the default S3 endpoint.
+---
+ CHANGELOG                                     |  3 +++
+ Remote/S3.hs                                  | 23 ++++++++++++++++++-
+ ..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++
+ ..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++
+ doc/special_remotes/S3.mdwn                   |  4 ++++
+ ..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++
+ 6 files changed, 65 insertions(+), 1 deletion(-)
+ create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment
+ create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment
+ create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment
+
+diff --git a/Remote/S3.hs b/Remote/S3.hs
+index cb345d1f8..e3ea492f2 100644
+--- a/Remote/S3.hs
++++ b/Remote/S3.hs
+@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType
+ 				(FieldDesc "port to connect to")
+ 			, optionalStringParser requeststyleField
+ 				(FieldDesc "for path-style requests, set to \"path\"")
++			, signatureVersionParser signatureField
++				(FieldDesc "S3 signature version")
+ 			, optionalStringParser mungekeysField HiddenField
+ 			, optionalStringParser AWS.s3credsField HiddenField
+ 			]
+@@ -148,6 +150,22 @@ protocolField = Accepted "protocol"
+ requeststyleField :: RemoteConfigField
+ requeststyleField = Accepted "requeststyle"
+ 
++signatureField :: RemoteConfigField
++signatureField = Accepted "signature"
++
++newtype SignatureVersion = SignatureVersion Int
++
++signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser
++signatureVersionParser f fd =
++	genParser go f defver fd
++		(Just (ValueDesc "v2 or v4"))
++  where
++	go "v2" = Just (SignatureVersion 2)
++	go "v4" = Just (SignatureVersion 4)
++	go _ = Nothing
++
++	defver = SignatureVersion 2
++
+ portField :: RemoteConfigField
+ portField = Accepted "port"
+ 
+@@ -877,7 +895,10 @@ s3Configuration c = cfg
+ 		Nothing
+ 			| port == 443 -> AWS.HTTPS
+ 			| otherwise -> AWS.HTTP
+-	cfg = S3.s3 proto endpoint False
++	cfg = case getRemoteConfigValue signatureField c of
++		Just (SignatureVersion 4) -> 
++			S3.s3v4 proto endpoint False S3.SignWithEffort
++		_ -> S3.s3 proto endpoint False
+ 
+ data S3Info = S3Info
+ 	{ bucket :: S3.Bucket
+-- 
+2.26.2
+