summaryrefslogtreecommitdiff
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
+