gnu: ntk: Don't use bundled waf.
[jackhill/guix/guix.git] / gnu / packages / sync.scm
CommitLineData
b2e93b9e 1;;; GNU Guix --- Functional package management for GNU
e718ce14 2;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
7ee557a7 3;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
9358ae8a 4;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
fe84a00f 5;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
b2e93b9e
EF
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
760d6066 22(define-module (gnu packages sync)
b2e93b9e
EF
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix build-system cmake)
fe84a00f 25 #:use-module (guix build-system meson)
b2e93b9e 26 #:use-module (guix download)
fe84a00f 27 #:use-module (guix git-download)
b2e93b9e 28 #:use-module (guix packages)
6563d58c 29 #:use-module (gnu packages)
fe84a00f 30 #:use-module (gnu packages acl)
2523691a 31 #:use-module (gnu packages check)
b2e93b9e 32 #:use-module (gnu packages compression)
fe84a00f 33 #:use-module (gnu packages curl)
b2e93b9e
EF
34 #:use-module (gnu packages databases)
35 #:use-module (gnu packages linux)
7ee557a7 36 #:use-module (gnu packages lua)
b2e93b9e 37 #:use-module (gnu packages perl)
fe84a00f 38 #:use-module (gnu packages python)
b2e93b9e 39 #:use-module (gnu packages pkg-config)
b2e93b9e 40 #:use-module (gnu packages qt)
fe84a00f
LC
41 #:use-module (gnu packages rsync)
42 #:use-module (gnu packages selinux)
b2e93b9e
EF
43 #:use-module (gnu packages tls))
44
45(define-public owncloud-client
46 (package
47 (name "owncloud-client")
e718ce14 48 (version "2.4.1")
b2e93b9e
EF
49 (source
50 (origin
51 (method url-fetch)
52 (uri (string-append "https://download.owncloud.com/desktop/stable/"
53 "owncloudclient-" version ".tar.xz"))
54 (sha256
e718ce14 55 (base32 "08xayz0alvypwa1bjmw1rmh4m3sclld4yq7kcbf264983icawqj4"))
6563d58c 56 (patches (search-patches "owncloud-disable-updatecheck.patch"))
5fc4df0c
EF
57 (modules '((guix build utils)))
58 (snippet
59 '(begin
e718ce14 60 ;; libcrashreporter-qt has its own bundled dependencies
5fc4df0c 61 (delete-file-recursively "src/3rdparty/libcrashreporter-qt")
5fc4df0c 62 (delete-file-recursively "src/3rdparty/sqlite3")
e718ce14 63 ;; qprogessindicator, qlockedfile, qtokenizer and
5fc4df0c
EF
64 ;; qtsingleapplication have not yet been packaged, but all are
65 ;; explicitly used from the 3rdparty folder during build.
66 ;; We can also remove the macgoodies folder
6cbee49d
MW
67 (delete-file-recursively "src/3rdparty/qtmacgoodies")
68 #t))))
b2e93b9e
EF
69 (build-system cmake-build-system)
70 (arguments
71 `(#:phases
72 (modify-phases %standard-phases
2523691a 73 (add-after 'unpack 'delete-failing-tests
be58ffa4 74 ;; "Could not create autostart folder"
2523691a
EF
75 (lambda _
76 (substitute* "test/CMakeLists.txt"
2523691a
EF
77 (("owncloud_add_test\\(Utility \"\"\\)" test)
78 (string-append "#" test)))
79 #t)))
e718ce14
EF
80 #:configure-flags '("-DUNIT_TESTING=ON"
81 ;; build without qtwebkit, which causes the
82 ;; package to FTBFS while looking for QWebView.
83 "-DNO_SHIBBOLETH=1")))
2523691a
EF
84 (native-inputs
85 `(("cmocka" ,cmocka)
86 ("perl" ,perl)
87 ("pkg-config" ,pkg-config)
88 ("qtlinguist" ,qttools)))
b2e93b9e 89 (inputs
e718ce14 90 `(("qtbase" ,qtbase)
b2e93b9e 91 ("qtkeychain" ,qtkeychain)
b2e93b9e
EF
92 ("sqlite" ,sqlite)
93 ("zlib" ,zlib)))
94 (home-page "https://owncloud.org")
95 (synopsis "Folder synchronization with an ownCloud server")
96 (description "The ownCloudSync system lets you always have your latest
97files wherever you are. Just specify one or more folders on the local machine
98to and a server to synchronize to. You can configure more computers to
99synchronize to the same server and any change to the files on one computer will
100silently and reliably flow across to every other.")
101 (license license:gpl2+)))
cf3504c6
EF
102
103(define-public qsyncthingtray
104 (package
105 (name "qsyncthingtray")
dc05f652 106 (version "0.5.8")
cf3504c6
EF
107 (source
108 (origin
109 (method url-fetch)
110 (uri (string-append
111 "https://github.com/sieren/QSyncthingTray/archive/"
112 version ".tar.gz"))
113 (file-name (string-append name "-" version ".tar.gz"))
114 (sha256
115 (base32
dc05f652 116 "1024778ml7q62ziqm4d22z5sc1715l34846pwfyzfpcyl32qlhpz"))))
cf3504c6
EF
117 (build-system cmake-build-system)
118 (arguments
119 `(#:configure-flags '("-DQST_BUILD_WEBKIT=1")
120 #:phases
121 (modify-phases %standard-phases
122 ;; The program is meant to be run from the git repo or source tarball.
123 (replace 'install
124 (lambda* (#:key outputs #:allow-other-keys)
125 (let* ((out (assoc-ref outputs "out"))
126 (bin (string-append out "/bin")))
127 (install-file "QSyncthingTray" bin)
128 (install-file (string-append
129 "../QSyncthingTray-"
130 ,(package-version qsyncthingtray)
131 "/resources/images/Icon1024.png")
132 (string-append
133 out "/share/pixmaps/QSyncthingTray.png"))
134 #t))))
135 #:tests? #f)) ; no test target
136 (inputs
137 `(("qtbase" ,qtbase)
138 ("qtwebkit" ,qtwebkit)))
139 (home-page "https://github.com/sieren/QSyncthingTray")
140 (synopsis "Traybar Application for Syncthing")
141 (description
142 "A traybar application for syncthing.
143@enumerate
144@item Shows number of connections at a glance.
145@item Traffic statistics about incoming, outgoing and total throughput.
146@item Launches Syncthing and Syncthing-iNotifier if specified.
147@item Quickly pause Syncthing with one click.
148@item Last Synced Files - Quickly see the recently synchronised files and open
149their folder.
150@item Quick Access to all shared folders.
151@item Presents Syncthing UI in a separate view instead of using the browser.
152@item Supports authenticated HTTPS connections.
153@item Uses System Notifications about current connection status.
154@item Toggle for monochrome icon.
155@end enumerate\n")
156 (license license:lgpl3+)))
7ee557a7
RW
157
158(define-public lsyncd
159 (package
160 (name "lsyncd")
9358ae8a 161 (version "2.2.2")
7ee557a7
RW
162 (source
163 (origin
164 (method url-fetch)
165 (uri (string-append "https://github.com/axkibe/lsyncd/archive/release-"
166 version ".tar.gz"))
167 (file-name (string-append name "-" version ".tar.gz"))
168 (sha256
169 (base32
9358ae8a 170 "02g054qv8rnbxywd4f0gnd13lrlns9175d3ciqnyslhs1zs15nqb"))))
7ee557a7
RW
171 (build-system cmake-build-system)
172 (arguments
173 `(;; The "tests" target is broken and assumes that tests are run in the
174 ;; root directory.
175 #:tests? #f
176 #:test-target "tests"
177 #:phases
178 (modify-phases %standard-phases
179 ;; No install target.
180 (replace 'install
181 (lambda* (#:key outputs #:allow-other-keys)
182 (let* ((out (assoc-ref outputs "out"))
183 (bin (string-append out "/bin"))
184 (man (string-append out "/share/man/man1")))
185 (install-file "lsyncd" bin)
186 (install-file (string-append "../lsyncd-release-"
187 ,version
188 "/doc/manpage/lsyncd.1")
189 man)
190 #t))))))
191 (native-inputs
192 `(("lua" ,lua-5.2)))
193 (home-page "https://github.com/axkibe/lsyncd")
194 (synopsis "Synchronize local directories with remote targets")
195 (description "Lsyncd watches a local directory trees event monitor
196interface (inotify or fsevents). It aggregates and combines events for a few
197seconds and then spawns one (or more) process(es) to synchronize the changes.
198By default this is rsync, which must be installed on all source and target
199machines. Lsyncd is thus a light-weight live mirror solution that is
162a1374
TGR
200comparatively easy to install not requiring new file systems or block devices
201and does not hamper local file system performance.")
7ee557a7 202 (license license:gpl2+)))
fe84a00f
LC
203
204(define-public casync
205 (package
206 (name "casync")
207 (version "2")
208 (home-page "https://github.com/systemd/casync/")
209 (source (origin
210 (method git-fetch)
211 (uri (git-reference
212 (url home-page)
213 (commit (string-append "v" version))))
214 (sha256
215 (base32
216 "0znkp3fcksrykcsv06y2mjvf2lbwmin25snmvfa8i5qfm3f4rm88"))
217 (file-name (string-append name "-" version "-checkout"))))
218 (build-system meson-build-system)
219 (native-inputs
220 `(("pkg-config" ,pkg-config)
221 ("python-sphinx" ,python-sphinx)
222 ("rsync" ,rsync))) ;for tests
223 (inputs
224 `(("xz" ,xz) ;for liblzma
225 ("zstd" ,zstd)
226 ("curl" ,curl)
227 ("acl" ,acl)
228 ("libselinux" ,libselinux)
229 ("fuse" ,fuse)
230 ("openssl" ,openssl)
231 ("zlib" ,zlib)))
232 (synopsis "File synchronization and backup system")
233 (description
234 "casync is a @dfn{content-addressable data synchronizer} that can be used
235as the basis of a backup system. It is:
236
237@itemize
238@item A combination of the rsync algorithm and content-addressable storage;
239@item An efficient way to store and retrieve multiple related versions of
240large file systems or directory trees;
241@item An efficient way to deliver and update OS, VM, IoT and container images
242over the Internet in an HTTP and CDN friendly way;
243@item An efficient backup system.
244@end itemize\n")
245 (license license:lgpl2.1+)))