gobby.scm 7.7 KB

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