gnu: Add lsyncd.

* gnu/packages/sync.scm (lsyncd): New variable.
This commit is contained in:
Ricardo Wurmus 2017-01-19 11:50:49 +01:00 committed by Ricardo Wurmus
parent b2725c53dd
commit 7ee557a75a
No known key found for this signature in database
GPG key ID: 197A5888235FACAC

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -25,6 +26,7 @@ (define-module (gnu packages sync)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt)
@ -158,3 +160,49 @@ (define-public qsyncthingtray
@item Toggle for monochrome icon.
@end enumerate\n")
(license license:lgpl3+)))
(define-public lsyncd
(package
(name "lsyncd")
(version "2.2.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/axkibe/lsyncd/archive/release-"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0da7mrq2c578v2dd5x9v75l1fqrm28jvn28qkcd49y8p992nj6gl"))))
(build-system cmake-build-system)
(arguments
`(;; The "tests" target is broken and assumes that tests are run in the
;; root directory.
#:tests? #f
#:test-target "tests"
#:phases
(modify-phases %standard-phases
;; No install target.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man1")))
(install-file "lsyncd" bin)
(install-file (string-append "../lsyncd-release-"
,version
"/doc/manpage/lsyncd.1")
man)
#t))))))
(native-inputs
`(("lua" ,lua-5.2)))
(home-page "https://github.com/axkibe/lsyncd")
(synopsis "Synchronize local directories with remote targets")
(description "Lsyncd watches a local directory trees event monitor
interface (inotify or fsevents). It aggregates and combines events for a few
seconds and then spawns one (or more) process(es) to synchronize the changes.
By default this is rsync, which must be installed on all source and target
machines. Lsyncd is thus a light-weight live mirror solution that is
comparatively easy to install not requiring new filesystems or block devices
and does not hamper local filesystem performance.")
(license license:gpl2+)))