diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 22dca039c0..82d29668dc 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -88,6 +88,7 @@ #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-crypto) + #:use-module (gnu packages golang-web) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages haskell-xyz) @@ -2140,6 +2141,75 @@ the XDG directory specification from @file{~/.@var{name}} to @file{~/.config/@var{name}}.") (license license:gpl2+)))) +(define-public s5cmd + (package + (name "s5cmd") + (version "2.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/peak/s5cmd") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1y1bwma6f68j00jfdjxvw5flp9l4cdys7dgkrr0yvfz68lk9a17v")) + (snippet + #~(begin (use-modules (guix build utils)) + (delete-file-recursively "vendor"))))) + (build-system go-build-system) + (arguments + (list + #:install-source? #f + #:import-path "github.com/peak/s5cmd/v2" + #:test-flags + #~(list "-vet=off" + ;; cp_test.go:74: assertion failed: text/plain; charset=utf-8 + ;; (tc.expectedContentType string) != text/html; charset=utf-8 + ;; (string) + "-skip" "TestGuessContentType") + #:test-subdirs + ;; build flag -mod=vendor only valid when using modules + ;; /<...>/peak/s5cmd/v2/e2e/util_test.go:417 +0x3b9 + ;; /<...>/peak/s5cmd/v2/e2e/main_test.go:12 +0x65 + #~(list "command/..." + "orderedwriter/..." + "progressbar/..." + "storage/..." + "storage/url/..." + "strutil/...") + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'rename-binaries + (lambda _ + (rename-file + (string-append #$output "/bin/v2") + (string-append #$output "/bin/s5cmd"))))))) + (native-inputs + (list go-github-com-aws-aws-sdk-go + go-github-com-cheggaaa-pb-v3 + go-github-com-google-go-cmp + go-github-com-hashicorp-go-multierror + go-github-com-iancoleman-strcase + go-github-com-igungor-gofakes3 + go-github-com-karrick-godirwalk + go-github-com-kballard-go-shellquote + go-github-com-lanrat-extsort-1.0.2 + go-github-com-termie-go-shutil + go-github-com-urfave-cli-v2 + go-go-uber-org-mock + go-gotest-tools-v3 + go-honnef-co-go-tools + go-mvdan-cc-unparam)) + (home-page "https://github.com/peak/s5cmd") + (synopsis "Parallel S3 and local filesystem execution tool") + (description + "@code{s5cmd} is a fast S3 and local filesystem execution tool. It comes +with support for a multitude of operations including tab completion and +wildcard support for files, which can be handy for object storage workflow +while working with large number of files.") + (license license:expat))) + (define-public squashfuse (package (name "squashfuse") diff --git a/gnu/packages/golang-xyz.scm b/gnu/packages/golang-xyz.scm index 696d2a450b..486f9655e3 100644 --- a/gnu/packages/golang-xyz.scm +++ b/gnu/packages/golang-xyz.scm @@ -16158,6 +16158,27 @@ in memory. The library operates on channels and uses temporary disk storage to handle datasets larger than available RAM.") (license license:asl2.0))) +;; For s5cmd@2.3.0, remove when a fresh version is released. +(define-public go-github-com-lanrat-extsort-1.0.2 + (hidden-package + (package + (inherit go-github-com-lanrat-extsort) + (name "go-github-com-lanrat-extsort") + (version "1.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lanrat/extsort") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0blsif4qzmmlqxhgc6dyl7rn9zws7mvlc6ckjj43cxlp517ravk8")))) + (arguments + (list + #:tests? #f + #:import-path "github.com/lanrat/extsort"))))) + (define-public go-github-com-layeh-gopher-luar (package (name "go-github-com-layeh-gopher-luar")