summary refs log tree commit diff
path: root/gnu/packages/messaging.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/messaging.scm')
-rw-r--r--gnu/packages/messaging.scm356
1 files changed, 259 insertions, 97 deletions
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index d50732dfc4..1500be43b0 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -32,71 +32,73 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages messaging)
-  #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix utils)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system glib-or-gtk)
-  #:use-module (guix build-system meson)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system perl)
-  #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages aspell)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages enchant)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages less)
   #:use-module (gnu packages libcanberra)
-  #:use-module (gnu packages man)
-  #:use-module (gnu packages networking)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
-  #:use-module (gnu packages xml)
-  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages glib)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages pcre)
-  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages tcl)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages admin)
-  #:use-module (gnu packages linux)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages icu4c)
-  #:use-module (gnu packages qt)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
-  #:use-module (gnu packages audio)
-  #:use-module (gnu packages bison)
-  #:use-module (gnu packages fontutils)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages guile)
-  #:use-module (gnu packages less)
-  #:use-module (gnu packages readline)
-  #:use-module (gnu packages photo)
-  #:use-module (gnu packages texinfo))
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
+  #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
+  #:use-module (guix build-system trivial)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public libotr
   (package
@@ -548,14 +550,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
 (define-public python-nbxmpp
   (package
     (name "python-nbxmpp")
-    (version "0.6.7")
+    (version "0.6.8")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nbxmpp" version))
        (sha256
         (base32
-         "0fas4iawjfdmkz8vr042wpq6b2qispi6fy35g4a62jw50jb1saav"))))
+         "1iip8ijxp86fx4bl1h67p2lp02p2zm1ga2p3q43nv30smj54nawc"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -573,7 +575,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
 (define-public gajim
   (package
     (name "gajim")
-    (version "1.0.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gajim.org/downloads/"
@@ -581,12 +583,19 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                                   "/gajim-" version ".tar.bz2"))
               (sha256
                (base32
-                "0ds4rqwfrpj89a489w6yih8gx5zi7qa4ffgld950fk7s0qxvcfnb"))))
+                "1qis8vs7y7g1zn5i5dshwrszidc22qpflycwb4nixvp9lbmkq0va"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
+     `(#:test-target "test_nogui"
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'install 'wrap-program
+         (add-after 'unpack 'add-plugin-dirs
+           (lambda _
+             (substitute* "gajim/common/configpaths.py"
+               (("_paths\\['PLUGINS_USER'\\]")
+                "_paths['PLUGINS_USER'],os.getenv('GAJIM_PLUGIN_PATH')"))
+             #t))
+         (add-after 'install 'wrap-gi-typelib-path
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (for-each
@@ -597,20 +606,6 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                       `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
                 '("gajim" "gajim-remote" "gajim-history-manager")))
              #t))
-         (add-before 'check 'remove-test-resolver
-           ;; This test requires network access.
-           (lambda _
-             (substitute* "test/runtests.py"
-               (("'integration.test_resolver',") ""))
-             #t))
-         (add-before 'check 'start-xserver
-           ;; Tests require a running X server.
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xorg-server (assoc-ref inputs "xorg-server"))
-                   (display ":1"))
-               (setenv "DISPLAY" display)
-               (zero? (system (string-append xorg-server "/bin/Xvfb "
-                                             display " &"))))))
          (add-after 'install 'install-icons
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -628,16 +623,30 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                  (symlink adwaita "Adwaita")
                  (copy-recursively hicolor "hicolor")))
              #t))
-         (add-after 'install-icons 'wrap-program
+         (add-after 'install-icons 'wrap-gsettings-schema-dir
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (wrap-program (string-append (assoc-ref outputs "out")
                                           "/bin/gajim")
                ;; For GtkFileChooserDialog.
                `("GSETTINGS_SCHEMA_DIR" =
                  (,(string-append (assoc-ref inputs "gtk+")
-                                  "/share/glib-2.0/schemas")))))))))
+                                  "/share/glib-2.0/schemas"))))
+             #t)))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "GAJIM_PLUGIN_PATH")
+            (separator #f)              ;single entry
+            (files '("share/gajim/plugins")))
+           ;; Gajim needs to use the propagated inputs of its plugins.
+           (search-path-specification
+            (variable "PYTHONPATH")
+            (files (list (string-append
+                          "lib/python"
+                          (version-major+minor (package-version python))
+                          "/site-packages"))))))
     (native-inputs
      `(("intltool" ,intltool)
+       ("python-docutils" ,python-docutils)
        ("xorg-server" ,xorg-server)))
     (inputs
      `(("adwaita-icon-theme" ,adwaita-icon-theme)
@@ -646,13 +655,13 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
        ("gtkspell3" ,gtkspell3)
        ("hicolor-icon-theme" ,hicolor-icon-theme)
        ("libsecret" ,libsecret)
-       ("python-axolotl" ,python-axolotl)
+       ("python-cssutils" ,python-cssutils)
        ("python-dbus" ,python-dbus)
-       ("python-docutils" ,python-docutils)
        ("python-gnupg" ,python-gnupg)
+       ("python-keyring" ,python-keyring)
        ("python-nbxmpp" ,python-nbxmpp)
        ("python-pillow" ,python-pillow)
-       ("python-pyasn1" ,python-pyasn1)
+       ("python-precis-i18n" ,python-precis-i18n)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
        ("python-pyopenssl" ,python-pyopenssl)
@@ -666,6 +675,41 @@ transformation; audio and video conferences; file transfer; TLS, GPG and
 end-to-end encryption support; XML console.")
     (license license:gpl3)))
 
+(define-public gajim-omemo
+  (package
+    (name "gajim-omemo")
+    (version "2.6.23")
+    (source (origin
+              (method url-fetch/zipbomb)
+              (uri (string-append
+                    "https://ftp.gajim.org/plugins_releases/omemo_"
+                    version ".zip"))
+              (sha256
+               (base32
+                "134zbscbcnhx4smad0ryvx3ngkqlsspafqf0kk8y2d3vcd9bf3pa"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (share (in-vicinity out "share/gajim/plugins"))
+                (source (assoc-ref %build-inputs "source")))
+           (mkdir-p share)
+           (copy-recursively source share)
+           #t))))
+    (propagated-inputs
+     `(("python-axolotl" ,python-axolotl)))
+    (home-page
+     "https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin")
+    (synopsis "Gajim OMEMO plugin")
+    (description
+     "This package provides the Gajim OMEMO plugin.  OMEMO is an XMPP
+Extension Protocol (XEP) for secure multi-client end-to-end encryption based
+on Axolotl and PEP.")
+    (license license:gpl3+)))
+
 (define-public dino
   ;; The only release tarball is for version 0.0, but it is very old and fails
   ;; to build.
@@ -827,8 +871,8 @@ protocols.")
     (license license:x11)))
 
 (define-public libtoxcore
-  (let ((revision "1")
-        (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
+  (let ((revision "2")
+        (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
     (package
       (name "libtoxcore")
       (version (string-append "0.0.0" "-"
@@ -841,26 +885,19 @@ protocols.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
+                  "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
       (build-system gnu-build-system)
+      (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
          ("libtool" ,libtool)
-         ;; TODO: Add when test suite is capable of passing.
-         ;; ("check" ,check)
+         ("check" ,check)
          ("pkg-config" ,pkg-config)))
       (inputs
        `(("libsodium" ,libsodium)
          ("opus" ,opus)
          ("libvpx" ,libvpx)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'autoconf
-             (lambda _
-               (zero? (system* "autoreconf" "-vfi")))))
-         #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
       (synopsis "Library for the Tox encrypted messenger protocol")
       (description
        "C library implementation of the Tox encrypted messenger protocol.")
@@ -876,13 +913,14 @@ protocols.")
     (version "0.2.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/TokTok/c-toxcore/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TokTok/c-toxcore.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0qlkimlvbd24nlj7w9b5rpz1r807magqxmfylc1mlxsqhmfi5zj7"))))
+         "0xgnraysz25fbws5zwjk92mwnl8k1yih701qam8kgm3rxh50kyhm"))))
     (arguments
      `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
                      ; for now.
@@ -1647,7 +1685,7 @@ notifications, and Python scripting support.")
 (define-public libqmatrixclient
   (package
     (name "libqmatrixclient")
-    (version "0.3.0.2")
+    (version "0.4.0")
     (source
      (origin
        (method git-fetch)
@@ -1657,7 +1695,7 @@ notifications, and Python scripting support.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "03pxmr4wa818fgqddkr2fkwz6pda538x3ic9yq7c40x98zqf55w5"))))
+         "1llzqjagvp91kcg26q5c4qw9aaz7wna3rh6k06rc3baivrjqf3cn"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)))
@@ -1675,7 +1713,7 @@ QMatrixClient project.")
 (define-public quaternion
   (package
     (name "quaternion")
-    (version "0.0.9.2")
+    (version "0.0.9.3")
     (source
      (origin
        (method git-fetch)
@@ -1685,31 +1723,31 @@ QMatrixClient project.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0zrr4khbbdf5ziq65gi0cb1yb1d0y5rv18wld22w1x96f7fkmrib"))))
+         "1hr9zqf301rg583n9jv256vzj7y57d8qgayk7c723bfknf1s6hh3"))))
     (build-system cmake-build-system)
     (inputs
      `(("libqmatrixclient" ,libqmatrixclient)
        ("qtbase" ,qtbase)
-       ("qtdeclarative" ,qtdeclarative)))
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtquickcontrols" ,qtquickcontrols)
+       ("qtsvg" ,qtsvg)
+       ("qttools" ,qttools)))
     (arguments
      `(#:tests? #f ; No tests
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-libqmatrixclient-dynamic-linking
-           ;; Upstream recommends statically linking with
-           ;; libqmatrixclient. Patch the source so that we can dynamically
-           ;; link instead. In a future release, when upstream moves to
-           ;; dynamic linking, remove this phase.
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("^add_subdirectory\\(lib\\)" all)
-                (string-append "#" all)))
-             (for-each
-              (lambda (file)
-                (substitute* file
-                  (("#include \"lib/([^\"]*)\"" all header)
-                   (string-append "#include <" header ">"))))
-              (find-files "client" "\\.(cpp|h)$"))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (string-append (assoc-ref outputs "out")
+                                          "/bin/quaternion")
+               `("QT_PLUGIN_PATH" ":" prefix
+                 (,(string-append (assoc-ref inputs "qtsvg")
+                                  "/lib/qt5/plugins")))
+               `("QML2_IMPORT_PATH" ":" prefix
+                 ,(map (lambda (label)
+                         (string-append (assoc-ref inputs label)
+                                        "/lib/qt5/qml"))
+                       '("qtdeclarative" "qtquickcontrols"))))
              #t)))))
     (home-page "https://matrix.org/docs/projects/client/quaternion.html")
     (synopsis "Graphical client for the Matrix instant messaging protocol")
@@ -1720,4 +1758,128 @@ QMatrixClient project.")
     (license (list license:gpl3+ ; all source code
                    license:lgpl3+)))) ; icons/breeze
 
+(define-public hangups
+  (package
+    (name "hangups")
+    (version "0.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "hangups" version))
+       (sha256
+        (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'relax-dependencies
+           ;; Relax overly strict package version specifications.
+           (lambda _
+             (substitute* "setup.py"
+               (("==") ">="))
+             #t)))))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)
+       ("python-appdirs" ,python-appdirs)
+       ("python-async-timeout" ,python-async-timeout)
+       ("python-configargparse" ,python-configargparse)
+       ("python-mechanicalsoup" ,python-mechanicalsoup)
+       ("python-protobuf" ,python-protobuf)
+       ("python-readlike" ,python-readlike)
+       ("python-reparser" ,python-reparser)
+       ("python-requests" ,python-requests)
+       ("python-urwid" ,python-urwid)))
+    (home-page "https://hangups.readthedocs.io/")
+    (synopsis "Instant messaging client for Google Hangouts")
+    (description
+     "Hangups is an instant messaging client for Google Hangouts.  It includes
+both a Python library and a reference client with a text-based user interface.
+
+Hangups is implements a reverse-engineered version of Hangouts' proprietary,
+non-interoperable protocol, which allows it to support features like group
+messaging that aren’t available to clients that connect over XMPP.")
+    (license license:expat)))
+
+(define-public telegram-purple
+  (package
+    (name "telegram-purple")
+    (version "1.3.1")
+    (home-page "https://github.com/majn/telegram-purple")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))
+                    (recursive? #t)))
+              (sha256
+               (base32
+                "0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "Makefile.in"
+                    ;; By default these two directories point to Pidgin's own
+                    ;; prefix.
+                    (("^PLUGIN_DIR_PURPLE=.*")
+                     (string-append
+                      "exec_prefix := @exec_prefix@\n"
+                      "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
+                    (("^DATA_ROOT_DIR_PURPLE=.*")
+                     "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
+
+                    ;; Honor sysconfdir instead of trying to write to /etc.
+                    (("DESTDIR\\)/etc/telegram-purple")
+                     "DESTDIR)@sysconfdir@/telegram-purple"))
+                  #t))
+              (patches (search-patches "telegram-purple-adjust-test.patch"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("which" ,which)))
+    (inputs
+     `(("pidgin" ,pidgin)
+       ("libgcrypt" ,libgcrypt)
+       ("libwebp" ,libwebp)
+       ("glib" ,glib)
+       ("gettext" ,gnu-gettext)
+       ("gtk+" ,gtk+-2)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; We're using release tag for repository checkout - let's prepare
+         ;; header defining GIT_COMMIT manually instead of running git to
+         ;; identify version which is being compiled. Git repository
+         ;; is removed anyway and only source code is kept.
+         (add-after 'unpack 'prepare-commit.h
+           (lambda _
+             (with-output-to-file "./commit.h"
+               (lambda ()
+                 (display
+                  (string-append "//generated by guix, use version instead of "
+                                 "commit\n"
+                                 "#ifndef GIT_COMMIT\n"
+                                 "#  define GIT_COMMIT \"v"
+                                 ,version "\"\n"
+                                 "#endif\n"))))
+             #t))
+         (add-before 'configure 'set-SHELL-variables
+           ;; Set these environment variables so that 'tgl/configure' uses the
+           ;; right shell and not /bin/sh.
+           (lambda _
+             (let ((bash (which "bash")))
+               (setenv "SHELL" bash)
+               (setenv "CONFIG_SHELL" bash)
+               #t))))))
+    (synopsis "Telegram messaging support for Pidgin")
+    (description
+     "Telegram-purple is a plugin for Libpurple, the communication library
+used by the Pidgin instant messaging client, that adds support for the
+Telegram messenger.")
+
+    ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
+    ;; itself is GPLv2+.
+    (license license:gpl2+)))
+
 ;;; messaging.scm ends here