gnu: emacs-helm: Update to 3.8.7.
[jackhill/guix/guix.git] / gnu / packages / gobby.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2016, 2017 Andy Wingo <wingo@igalia.com>
3 ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net>
4 ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
5 ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
6 ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
7 ;;;
8 ;;; This file is part of GNU Guix.
9 ;;;
10 ;;; GNU Guix is free software; you can redistribute it and/or modify it
11 ;;; under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 3 of the License, or (at
13 ;;; your option) any later version.
14 ;;;
15 ;;; GNU Guix is distributed in the hope that it will be useful, but
16 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
19 ;;;
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23 (define-module (gnu packages gobby)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix utils)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix build-system glib-or-gtk)
29 #:use-module (guix build-system gnu)
30 #:use-module (gnu packages)
31 #:use-module (gnu packages glib)
32 #:use-module (gnu packages gnome)
33 #:use-module (gnu packages gsasl)
34 #:use-module (gnu packages gtk)
35 #:use-module (gnu packages pkg-config)
36 #:use-module (gnu packages tls)
37 #:use-module (gnu packages xml))
38
39 (define-public libnet6
40 (package
41 (name "libnet6")
42 (version "1.3.14")
43 (source (origin
44 (method url-fetch)
45 (uri (string-append "http://releases.0x539.de/net6/net6-"
46 version ".tar.gz"))
47 (sha256
48 (base32
49 "088yqq60wjx3jqjlhl12893p15gl9asjpavrbhh590qzpqndhp8m"))))
50 (build-system gnu-build-system)
51 (native-inputs
52 (list pkg-config))
53 (arguments
54 `(#:configure-flags
55 (list "--disable-static")
56 #:phases
57 (modify-phases %standard-phases
58 (add-before 'configure 'update-gnutls-api
59 (lambda _
60 (substitute* "src/encrypt.cpp"
61 ;; The GnuTLS API to set authentication and other parameters
62 ;; and priorities changed in 3.4; update to allow ANON_DH via
63 ;; the new API.
64 (("gnutls_kx_set_priority\\(session, kx_prio\\)")
65 (string-append "gnutls_priority_set_direct"
66 "(session, \"NORMAL:+ANON-DH\", NULL)"))))))))
67 (inputs
68 (list libsigc++-2 gnutls))
69 (home-page "https://gobby.github.io/")
70 (synopsis "Network access framework for IPv4/IPv6")
71 (description
72 "Library which that provides a TCP protocol abstraction for C++.")
73 (license license:lgpl2.1)))
74
75 (define-public obby
76 (package
77 (name "obby")
78 (version "0.4.8")
79 (source (origin
80 (method url-fetch)
81 (uri (string-append "http://releases.0x539.de/obby/obby-"
82 version ".tar.gz"))
83 (file-name (string-append name "-" version ".tar.gz"))
84 (sha256
85 (base32
86 "0rwvp0kzsb8y6mq73rzb8yk4kvsrz64i2zf4lfqs3kh0x2k7n7bx"))))
87 (build-system gnu-build-system)
88 (arguments
89 `(#:configure-flags
90 (list "--disable-static")))
91 (native-inputs
92 (list pkg-config))
93 (inputs
94 (list libsigc++-2 gnutls libnet6))
95 (home-page "https://gobby.github.io/")
96 (synopsis "Library for building collaborative editors")
97 (description
98 "Library that provides synced document buffers. It supports multiple
99 documents in one session. Obby is used by the Gobby collaborative editor.")
100 (license license:gpl2+)))
101
102 ;; Although there is a newer version of Gobby defined below, the protocols are
103 ;; incompatible; you need Gobby 0.4 if you want to connect to servers running
104 ;; the 0.4 protocol.
105 (define-public gobby-0.4
106 (package
107 (name "gobby")
108 (version "0.4.13")
109 (source (origin
110 (method url-fetch)
111 (uri (string-append "http://releases.0x539.de/gobby/gobby-"
112 version ".tar.gz"))
113 (file-name (string-append name "-" version ".tar.gz"))
114 (sha256
115 (base32
116 "0w8q01lf6bcdz537b29m7rwlbc7k87b12vnpm1h6219ypvzqkgcc"))))
117 (build-system gnu-build-system)
118 (native-inputs
119 (list pkg-config intltool))
120 (inputs
121 `(("libxml++-2" ,libxml++-2)
122 ("gnutls" ,gnutls)
123 ("gtkmm-2" ,gtkmm-2)
124 ("gtksourceview-2" ,gtksourceview-2)
125 ("libnet6" ,libnet6)
126 ("obby" ,obby)))
127 (arguments
128 ;; Required by libsigc++.
129 `(#:configure-flags '("CXXFLAGS=-std=c++11")))
130 (home-page "https://gobby.github.io/")
131 (synopsis "Collaborative editor")
132 (description
133 "Collaborative editor that supports multiple documents in one session and
134 a multi-user chat. Gobby allows multiple users to edit the same document
135 together over the internet in real-time.
136
137 This is the older 0.4 version of Gobby. Use this version only if you need to
138 connect to a server running the old 0.4 protocol.")
139 (license license:gpl2+)))
140
141 (define-public gobby
142 (package
143 (name "gobby")
144 (version "0.6.0")
145 (source (origin
146 (method url-fetch)
147 (uri (string-append "http://releases.0x539.de/gobby/gobby-"
148 version ".tar.gz"))
149 (file-name (string-append name "-" version ".tar.gz"))
150 (sha256
151 (base32
152 "1p2wbnchxy2wdzk19p7bxfpbq5zawa0l500na57jp8jgk3qz7czx"))))
153 (build-system glib-or-gtk-build-system)
154 (native-inputs
155 (list pkg-config intltool itstool))
156 (inputs
157 `(("gnutls" ,gnutls)
158 ("gsasl" ,gsasl)
159 ("gtkmm" ,gtkmm-3)
160 ("gtksourceview" ,gtksourceview-3)
161 ("libinfinity" ,libinfinity)
162 ("libxml++-2" ,libxml++-2)))
163 (arguments
164 ;; Required by libsigc++.
165 `(#:configure-flags '("CXXFLAGS=-std=c++11")
166 #:phases
167 (modify-phases %standard-phases
168 (add-after 'install 'move-executable
169 (lambda* (#:key outputs #:allow-other-keys)
170 (with-directory-excursion (assoc-ref outputs "out")
171 (rename-file "bin/gobby-0.5" "bin/gobby"))
172 #t)))))
173 (home-page "https://gobby.github.io/")
174 (synopsis "Collaborative editor")
175 (description
176 "Collaborative editor that supports multiple documents in one session and
177 a multi-user chat. Gobby allows multiple users to edit the same document
178 together over the internet in real-time.")
179 (license license:gpl2+)))
180
181 (define-public libinfinity
182 (package
183 (name "libinfinity")
184 (version "0.7.2")
185 (source
186 (origin
187 (method url-fetch)
188 (uri (string-append "http://releases.0x539.de/libinfinity/libinfinity-"
189 version ".tar.gz"))
190 (sha256
191 (base32
192 "17i3g61hxz9pzl3ryd1yr15142r25m06jfzjrpdy7ic1b8vjjw3f"))))
193 (build-system gnu-build-system)
194 (inputs
195 (list glib gsasl gtk+ libxml2))
196 (native-inputs
197 (list pkg-config))
198 (arguments
199 `(#:configure-flags (list "--disable-static"
200 "--with-inftextgtk"
201 "--with-infgtk")))
202 (home-page "https://gobby.github.io/")
203 (synopsis "Infininote protocol implementation")
204 (description "libinfinity is a library to build collaborative text
205 editors. Changes to the text buffers are synced to all other clients over a
206 central server. Even though a central server is involved, the local user sees
207 his changes applied instantly and the merging is done on the individual
208 clients.")
209 (license license:lgpl2.1+)))