diff options
Diffstat (limited to 'gnu/packages/messaging.scm')
-rw-r--r-- | gnu/packages/messaging.scm | 356 |
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 |