From 47f92fbb1062cb19201347324285fa9aea8e443d Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 2 Dec 2018 00:07:41 +0100 Subject: [PATCH] gnu: Add rclone (take 2) * gnu/packages/sync.scm (rclone): New variable. --- gnu/packages/sync.scm | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm index e0b0af3d96..a50ff2fee0 100644 --- a/gnu/packages/sync.scm +++ b/gnu/packages/sync.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Ludovic Courtès +;;; Copyright © 2018 Nicolas Goaziou ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ (define-module (gnu packages sync) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) + #:use-module (guix build-system go) #:use-module (guix build-system meson) #:use-module (guix download) #:use-module (guix git-download) @@ -32,6 +34,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages databases) + #:use-module (gnu packages golang) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages perl) @@ -243,3 +246,48 @@ over the Internet in an HTTP and CDN friendly way; @item An efficient backup system. @end itemize\n") (license license:lgpl2.1+))) + +(define-public rclone + (package + (name "rclone") + (version "1.45") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ncw/rclone.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "06xg0ibv9pnrnmabh1kblvxx1pk8h5rmkr9mjbymv497sx3zgz26")))) + ;; FIXME: Rclone bundles some libraries Guix already provides. Need to + ;; un-bundle them. + (build-system go-build-system) + (arguments + '(#:import-path "github.com/ncw/rclone" + #:install-source? #f + #:phases + (modify-phases %standard-phases + ;; Fix failure during "check" phase: "mkdir /homeless-shelter: + ;; permission denied". + (add-after 'unpack 'set-home-directory + (lambda _ (setenv "HOME" "/tmp") #t))))) + (synopsis "@code{rsync} for cloud storage") + (description "@code{Rclone} is a command line program to sync files and +directories to and from different cloud storage providers. + +Features include: +@itemize +@item MD5/SHA1 hashes checked at all times for file integrity +@item Timestamps preserved on files +@item Partial syncs supported on a whole file basis +@item Copy mode to just copy new/changed files +@item Sync (one way) mode to make a directory identical +@item Check mode to check for file hash equality +@item Can sync to and from network, e.g., two different cloud accounts +@item Optional encryption (Crypt) +@item Optional cache (Cache) +@item Optional FUSE mount (rclone mount) +@end itemize") + (home-page "https://rclone.org/") + (license license:expat)))