From 5de2246f408743c1a253e0fa7dfe902ec2a05355 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 11 May 2020 14:34:38 +0300 Subject: gnu: git-annex: Add support for v4 of S3 support. * gnu/packages/haskell-apps.scm (git-annex)[source]: Add patch. * gnu/packages/patches/git-annex-S3v4.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. --- gnu/local.mk | 1 + gnu/packages/haskell-apps.scm | 4 +- gnu/packages/patches/git-annex-S3v4.patch | 77 +++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/git-annex-S3v4.patch 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 ;;; Copyright © 2019 Kyle Meyer ;;; Copyright © 2015 John Soo -;;; Copyright © 2019 Efraim Flashner +;;; Copyright © 2019, 2020 Efraim Flashner ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2020 Alexandru-Sergiu Marton ;;; Copyright © 2020 Brian Leung @@ -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 +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 + -- cgit v1.2.3