diff mbox

gnu: Add pybitmessage, [PATCH] gnu: Add python2-pyqt-4, [PATCH] gnu: gnu: messaging: Use license: prefix.

Message ID 878tvnk804.fsf@we.make.ritual.n0.is
State New
Headers show

Commit Message

non such Aug. 23, 2016, 12:03 p.m. UTC
These 3 patches enable us to have a functional pybitmessage version
0.6.1, released 2 days ago.

For tests you can use either the test channel which can be found on
bitmessage.org (or in the application itself? I don't know, I'm no
newcomer to this application) or the channel I did setup a while ago
(blame my window manager if there's a typo, the copy & paste is
sometimes stuck):
BM-2cTPsDEX29yRnrAmyfwZhC3RySsK4wnQUA
[chan] gnuguixchan

Comments

non such Aug. 25, 2016, 9:52 a.m. UTC | #1
ng0 <ng0@we.make.ritual.n0.is> writes:

> These 3 patches enable us to have a functional pybitmessage version
> 0.6.1, released 2 days ago.
>
> For tests you can use either the test channel which can be found on
> bitmessage.org (or in the application itself? I don't know, I'm no
> newcomer to this application) or the channel I did setup a while ago
> (blame my window manager if there's a typo, the copy & paste is
> sometimes stuck):
> BM-2cTPsDEX29yRnrAmyfwZhC3RySsK4wnQUA
> [chan] gnuguixchan
>
> From 8687409cf6f424958e222de9eddf4c77750ecc57 Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@we.make.ritual.n0.is>
> Date: Tue, 23 Aug 2016 10:13:59 +0000
> Subject: [PATCH 1/3] gnu: Add python2-pyqt-4.
>
> * gnu/packages/qt.scm (python2-pyqt-4): New variable.
> ---
>  gnu/packages/qt.scm | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
> index a7eee7c..99c12aa 100644
> --- a/gnu/packages/qt.scm
> +++ b/gnu/packages/qt.scm
> @@ -3,6 +3,7 @@
>  ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
>  ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
>  ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
> +;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -1057,6 +1058,15 @@ contain over 620 classes.")
>           %standard-phases)))
>      (license (list gpl2 gpl3)))) ; choice of either license
>  
> +(define-public python2-pyqt-4
> +  (package (inherit python-pyqt-4)
> +           (name "python2-pyqt-4")
> +           (native-inputs
> +            `(("python-sip" ,python2-sip)
> +              ("qt" ,qt-4)))
> +           (inputs
> +            `(("python" ,python-2)))))
> +
>  (define-public qtkeychain
>    (package
>      (name "qtkeychain")
> -- 
> 2.9.3
>
> From 523d7da2b50028826de9f306171a60f77d25625e Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@we.make.ritual.n0.is>
> Date: Tue, 23 Aug 2016 11:07:17 +0000
> Subject: [PATCH 2/3] gnu: messaging: Use license: prefix.
>
> * gnu/packages/disk.scm (define-module): Import guix licenses with a prefix.
> (libotr): Use the import prefix.
> (bitlbee): Likewise.
> (hexchat): Likewise.
> (ngircd): Likewise.
> (pidgin): Likewise.
> (pidgin-otr): Likewise.
> (znc): Likewise.
> (python-nbxmpp): Likewise.
> (gajim): Likewise.
> ---
>  gnu/packages/messaging.scm | 31 +++++++++++++++----------------
>  1 file changed, 15 insertions(+), 16 deletions(-)
>
> diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
> index de9ac17..b0546f2 100644
> --- a/gnu/packages/messaging.scm
> +++ b/gnu/packages/messaging.scm
> @@ -5,6 +5,7 @@
>  ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
>  ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
>  ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
> +;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -22,9 +23,7 @@
>  ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
>  
>  (define-module (gnu packages messaging)
> -  #:use-module ((guix licenses)
> -                #:select (gpl3+ gpl2+ gpl2 lgpl2.1 lgpl2.0+ bsd-2 non-copyleft
> -                          asl2.0))
> +  #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix utils)
>    #:use-module (guix packages)
>    #:use-module (guix download)
> @@ -89,7 +88,7 @@ correspondent is assured the messages he sees are authentic and
>  unmodified.  (4) Perfect forward secrecy: If you lose control of your private
>  keys, no previous conversation is compromised.")
>      (home-page "https://otr.cypherpunks.ca/")
> -    (license (list lgpl2.1 gpl2))))
> +    (license (list license:lgpl2.1 license:gpl2))))
>  
>  ;; These patches together fix https://github.com/bitlbee/bitlbee/pull/55, are
>  ;; already upstream, and should be unnecessary when the next bitlbee comes
> @@ -153,7 +152,7 @@ Google Talk), MSN Messenger, Yahoo!  Messenger, AIM and ICQ, and the Twitter
>  microblogging network (plus all other Twitter API compatible services like
>  identi.ca and status.net).")
>      (home-page "http://www.bitlbee.org/")
> -    (license (list gpl2+ bsd-2))))
> +    (license (list license:gpl2+ license:bsd-2))))
>  
>  (define-public hexchat
>    (package
> @@ -187,7 +186,7 @@ conversation and the list of users.  It uses colors to differentiate between
>  users and to highlight messages.  It checks spelling using available
>  dictionaries.  HexChat can be extended with multiple addons.")
>      (home-page "http://hexchat.net/")
> -    (license gpl2+)))
> +    (license license:gpl2+)))
>  
>  (define-public ngircd
>    (package
> @@ -252,7 +251,7 @@ dictionaries.  HexChat can be extended with multiple addons.")
>       "ngIRCd is a lightweight Internet Relay Chat server for small or private
>  networks.  It is easy to configure, can cope with dynamic IP addresses, and
>  supports IPv6, SSL-protected connections as well as PAM for authentication.")
> -    (license gpl2+)))
> +    (license license:gpl2+)))
>  
>  (define-public pidgin
>    (package
> @@ -326,14 +325,14 @@ supports IPv6, SSL-protected connections as well as PAM for authentication.")
>  chat protocols.")
>      (license
>       (list
> -      gpl2+    ; Most of the code
> -      lgpl2.1  ; GG protocol plugin (libpurple/protocols/gg/lib)
> -      lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
> +      license:gpl2+    ; Most of the code
> +      license:lgpl2.1  ; GG protocol plugin (libpurple/protocols/gg/lib)
> +      license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
>        ;; The following licenses cover the zephyr protocol plugin:
> -      (non-copyleft
> +      (license:non-copyleft
>         "file://libpurple/protocols/zephyr/mit-copyright.h"
>         "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
> -      (non-copyleft
> +      (license:non-copyleft
>         "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
>         "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
>  
> @@ -373,7 +372,7 @@ you.  However, during a conversation, your correspondent is assured the
>  messages he sees are authentic and unmodified.  (4) Perfect forward secrecy:
>  If you lose control of your private keys, no previous conversation is
>  compromised.")
> -    (license gpl2)))
> +    (license license:gpl2)))
>  
>  (define-public znc
>    (package
> @@ -407,7 +406,7 @@ compromised.")
>  client from the actual IRC server, and also from selected channels.  Multiple
>  clients from different locations can connect to a single ZNC account
>  simultaneously and therefore appear under the same nickname on IRC.")
> -    (license asl2.0)))
> +    (license license:asl2.0)))
>  
>  (define-public python-nbxmpp
>    (package
> @@ -430,7 +429,7 @@ simultaneously and therefore appear under the same nickname on IRC.")
>       "The goal of this python library is to provide a way for Python
>  applications to use Jabber/XMPP networks in a non-blocking way.  This library
>  was initially a fork of xmpppy, but is using non-blocking sockets.")
> -    (license gpl3+)))
> +    (license license:gpl3+)))
>  
>  (define-public python2-nbxmpp
>    (package-with-python2 python-nbxmpp))
> @@ -490,6 +489,6 @@ Among its features are: a tabbed chat window and single window modes; support
>  for group chat (with Multi-User Chat protocol), invitation, chat to group chat
>  transformation; audio and video conferences; file transfer; TLS, GPG and
>  end-to-end encryption support; XML console.")
> -    (license gpl3+)))
> +    (license license:gpl3+)))
>  
>  ;;; messaging.scm ends here
> -- 
> 2.9.3
>
> From ae2e16e0c6e239d9d3e2ee594772c9d564050ec6 Mon Sep 17 00:00:00 2001
> From: ng0 <ng0@we.make.ritual.n0.is>
> Date: Tue, 23 Aug 2016 11:51:24 +0000
> Subject: [PATCH 3/3] gnu: Add pybitmessage.
>
> * gnu/packages/messaging.scm (pybitmessage): New variable.
> ---
>  gnu/packages/messaging.scm | 95 +++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 94 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
> index b0546f2..5d4ca3f 100644
> --- a/gnu/packages/messaging.scm
> +++ b/gnu/packages/messaging.scm
> @@ -57,7 +57,8 @@
>    #:use-module (gnu packages admin)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages tls)
> -  #:use-module (gnu packages icu4c))
> +  #:use-module (gnu packages icu4c)
> +  #:use-module (gnu packages qt))
>  
>  (define-public libotr
>    (package
> @@ -491,4 +492,96 @@ transformation; audio and video conferences; file transfer; TLS, GPG and
>  end-to-end encryption support; XML console.")
>      (license license:gpl3+)))
>  
> +(define-public pybitmessage
> +  (package
> +    (name "pybitmessage")
> +    (version "0.6.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://github.com/Bitmessage/"
> +                           "PyBitmessage/archive/v" version ".tar.gz"))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "1ffj7raxpp277kphj98190fxrwfx16vmbspk7k3azg3bh5f5idnf"))))
> +    (inputs
> +     `(("python" ,python-2)
> +       ("python:tk" ,python-2 "tk")
> +       ("openssl" ,openssl)
> +       ("sqlite" ,sqlite)
> +       ("qt" ,qt-4)
> +       ("python2-pyqt-4" ,python2-pyqt-4)
> +       ("python2-sip" ,python2-sip)
> +       ("python2-pysqlite" ,python2-pysqlite)
> +       ("python2-pyopenssl" ,python2-pyopenssl)))
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:imported-modules ((guix build python-build-system)
> +                           ,@%gnu-build-system-modules)
> +       #:make-flags (list (string-append "PREFIX="
> +                                         (assoc-ref %outputs "out")))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'build 'fix-makefile
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (substitute* "Makefile"
> +               (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
> +               (("/usr/local") "")
> +               (("/usr") "")
> +               (("#!/bin/sh") (string-append "#!" (which "bash")))
> +               (("python2") (which "python"))
> +               (("/opt/openssl-compat-bitcoin/lib/")
> +                (string-append (assoc-ref inputs "openssl") "/lib/")))))
> +         (add-after 'unpack 'fix-unmatched-python-shebangs
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "src/bitmessagemain.py"
> +               (("#!/usr/bin/env python2.7")
> +                (string-append "#!" (which "python"))))
> +             (substitute* "src/bitmessagecli.py"
> +               (("#!/usr/bin/env python2.7.x")
> +                (string-append "#!" (which "python"))))))
> +         (add-after 'unpack 'fix-depends
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "src/depends.py"
> +               (("libcrypto.so")
> +                (string-append (assoc-ref inputs "openssl")
> +                               "/lib/libcrypto.so")))))
> +         (add-after 'unpack 'fix-local-files-in-paths
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (substitute* "src/proofofwork.py"
> +               (("bitmsghash.so")
> +                (string-append (assoc-ref outputs "out")
> +                               "/lib/bitmsghash.so")))))
> +         (add-after 'unpack 'fix-pyelliptic
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (substitute* "src/pyelliptic/openssl.py"
> +               (("libcrypto.so")
> +                (string-append (assoc-ref inputs "openssl")
> +                               "/lib/libcrypto.so"))
> +               (("libssl.so")
> +                (string-append (assoc-ref inputs "openssl")
> +                               "/lib/libssl.so")))))
> +         ;; XXX: Make does not build and install bitmsghash, do it
> +         ;; and place it in /lib.
> +         (add-before 'build 'build-and-install-bitmsghash
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (chdir "src/bitmsghash")
> +             (system* "make")
> +             (chdir "../..")
> +             (install-file "src/bitmsghash/bitmsghash.so"
> +                           (string-append (assoc-ref outputs "out") "/lib"))
> +             #t))
> +         (add-after 'install 'wrap
> +           (@@ (guix build python-build-system) wrap))
> +         (delete 'check)))) ; not available
> +    (license license:expat)
> +    (description
> +     "Distributed and trustless peer-to-peer communications protocol
> +for sending encrypted messages to one person or many subscribers.")
> +    (synopsis "Distributed peer-to-peer communication")
> +    (home-page "https://bitmessage.org/")))
> +
>  ;;; messaging.scm ends here
> -- 
> 2.9.3

Just a thought to change the description a tiny bit when someone
packages another bitmessage client: This is the implementation as found
on bitmessage.org, but it is not the only implementation.
Andreas Enge Sept. 3, 2016, 3:54 p.m. UTC | #2
Hello,

On Tue, Aug 23, 2016 at 12:03:07PM +0000, ng0 wrote:
> These 3 patches enable us to have a functional pybitmessage version
> 0.6.1, released 2 days ago.
> 
> Subject: [PATCH 1/3] gnu: Add python2-pyqt-4.
> * gnu/packages/qt.scm (python2-pyqt-4): New variable.

if at all possible, we should not add packages that depend on Qt-4.
This one, in particular, would revert my following commit:

commit 3297deedd1fcfd98641b01b477fad182f70cad61
Author: Andreas Enge <andreas@enge.fr>
Date:   Mon Feb 22 21:33:29 2016 +0100

    gnu: Remove python2-pyqt-4.
    
    * gnu/packages/qt.scm (python2-pyqt-4): Delete variable. It depends on Qt 4,
      which does not receive security updates any more.

I had removed the package since I realised that nothing depended on it.

The goal is to get rid of Qt-4 (and also of the monolithic Qt-5).

Andreas
non such Sept. 3, 2016, 4:47 p.m. UTC | #3
Andreas Enge <andreas@enge.fr> writes:

> Hello,
>
> On Tue, Aug 23, 2016 at 12:03:07PM +0000, ng0 wrote:
>> These 3 patches enable us to have a functional pybitmessage version
>> 0.6.1, released 2 days ago.
>> 
>> Subject: [PATCH 1/3] gnu: Add python2-pyqt-4.
>> * gnu/packages/qt.scm (python2-pyqt-4): New variable.
>
> if at all possible, we should not add packages that depend on Qt-4.
> This one, in particular, would revert my following commit:
>
> commit 3297deedd1fcfd98641b01b477fad182f70cad61
> Author: Andreas Enge <andreas@enge.fr>
> Date:   Mon Feb 22 21:33:29 2016 +0100
>
>     gnu: Remove python2-pyqt-4.
>     
>     * gnu/packages/qt.scm (python2-pyqt-4): Delete variable. It depends on Qt 4,
>       which does not receive security updates any more.
>
> I had removed the package since I realised that nothing depended on it.
>
> The goal is to get rid of Qt-4 (and also of the monolithic Qt-5).
>
> Andreas
>

Upstream is aware of this and told me they are working on a port towards
qt5 and also python3. However there is no deadline. It is their
choice. As I recently read there are people using Guix who are
interested in using PyBitmessage.
This package is usable, license fits, I find this block you create a bit
harsh. I can understand it, but does it mean that you are against adding
it at all because of qt4?
Andreas Enge Sept. 3, 2016, 7:43 p.m. UTC | #4
On Sat, Sep 03, 2016 at 04:47:52PM +0000, ng0 wrote:
> Upstream is aware of this and told me they are working on a port towards
> qt5 and also python3. However there is no deadline. It is their
> choice. As I recently read there are people using Guix who are
> interested in using PyBitmessage.
> This package is usable, license fits, I find this block you create a bit
> harsh. I can understand it, but does it mean that you are against adding
> it at all because of qt4?

I am not blocking, it is just a bit frustrating to go backwards! If there
is no other solution and no easy replacement for the package you wish to add,
we could revert my previous commit. I am just feeling uneasy about packages
that are not maintained by upstream and do not receive security updates
any more.

Andreas
non such Sept. 4, 2016, 12:24 p.m. UTC | #5
Andreas Enge <andreas@enge.fr> writes:

> On Sat, Sep 03, 2016 at 04:47:52PM +0000, ng0 wrote:
>> Upstream is aware of this and told me they are working on a port towards
>> qt5 and also python3. However there is no deadline. It is their
>> choice. As I recently read there are people using Guix who are
>> interested in using PyBitmessage.
>> This package is usable, license fits, I find this block you create a bit
>> harsh. I can understand it, but does it mean that you are against adding
>> it at all because of qt4?
>
> I am not blocking, it is just a bit frustrating to go backwards! If there
> is no other solution and no easy replacement for the package you wish to add,
> we could revert my previous commit. I am just feeling uneasy about packages
> that are not maintained by upstream and do not receive security updates
> any more.
>
> Andreas
>

Okay, I just wanted to ask. It felt a bit frustrating at first to get
such a comment on something I worked on for more than just a few
minutes. Thanks for clearing this up.

There is no other solution than to contribute to upstream to work
towards qt5 port. There's not much difference between pyqt5 and pyqt4,
but I don't have the time to investigate and invest into this at the
moment. My bugreport was a 1on1 message exchange with one of the
developers of PyBitmessage, I'll open official bugreports now because
this is not effective (I had a 50% finished setup.py passed along to
this developer several months ago as a patch, nothing happened... github
reaction was much faster).
I know because a repository of it exists, that python2 -> python3 is
being worked on.
I want to drop qt4, but this application currently leaves me no other
choice than to rely on qt4 and pyqt4.
non such Sept. 4, 2016, 12:39 p.m. UTC | #6
Upstream Bugreport:
https://github.com/Bitmessage/PyBitmessage/issues/897
non such Sept. 6, 2016, 10:09 p.m. UTC | #7
ng0 <ng0@we.make.ritual.n0.is> writes:

> Upstream Bugreport:
> https://github.com/Bitmessage/PyBitmessage/issues/897

So we know this won't be fixed soon and that their priorities weird for
a software of this kind.
I think we have software with more problematic issues packaged, so
considering the fact that you can use this headless (you'll have to read
up how this works, I'venever done it), we can accept this, right?

If the problems get worse than this, we can always drop it later.
Efraim Flashner Sept. 7, 2016, 6:27 a.m. UTC | #8
On Tue, Sep 06, 2016 at 10:09:14PM +0000, ng0 wrote:
> ng0 <ng0@we.make.ritual.n0.is> writes:
> 
> > Upstream Bugreport:
> > https://github.com/Bitmessage/PyBitmessage/issues/897
> 
> So we know this won't be fixed soon and that their priorities weird for
> a software of this kind.
> I think we have software with more problematic issues packaged, so
> considering the fact that you can use this headless (you'll have to read
> up how this works, I'venever done it), we can accept this, right?
> 
> If the problems get worse than this, we can always drop it later.

The best we can do in this case is try to get upstream to switch over to
better supported toolchains. Dianara is on my eventual to-do list and it
also is currently qt4.
diff mbox

Patch

From ae2e16e0c6e239d9d3e2ee594772c9d564050ec6 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@we.make.ritual.n0.is>
Date: Tue, 23 Aug 2016 11:51:24 +0000
Subject: [PATCH 3/3] gnu: Add pybitmessage.

* gnu/packages/messaging.scm (pybitmessage): New variable.
---
 gnu/packages/messaging.scm | 95 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 94 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index b0546f2..5d4ca3f 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -57,7 +57,8 @@ 
   #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages icu4c))
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages qt))
 
 (define-public libotr
   (package
@@ -491,4 +492,96 @@  transformation; audio and video conferences; file transfer; TLS, GPG and
 end-to-end encryption support; XML console.")
     (license license:gpl3+)))
 
+(define-public pybitmessage
+  (package
+    (name "pybitmessage")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/Bitmessage/"
+                           "PyBitmessage/archive/v" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ffj7raxpp277kphj98190fxrwfx16vmbspk7k3azg3bh5f5idnf"))))
+    (inputs
+     `(("python" ,python-2)
+       ("python:tk" ,python-2 "tk")
+       ("openssl" ,openssl)
+       ("sqlite" ,sqlite)
+       ("qt" ,qt-4)
+       ("python2-pyqt-4" ,python2-pyqt-4)
+       ("python2-sip" ,python2-sip)
+       ("python2-pysqlite" ,python2-pysqlite)
+       ("python2-pyopenssl" ,python2-pyopenssl)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
+       #:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-makefile
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("mkdir -p \\$\\{DESTDIR\\}/usr") "")
+               (("/usr/local") "")
+               (("/usr") "")
+               (("#!/bin/sh") (string-append "#!" (which "bash")))
+               (("python2") (which "python"))
+               (("/opt/openssl-compat-bitcoin/lib/")
+                (string-append (assoc-ref inputs "openssl") "/lib/")))))
+         (add-after 'unpack 'fix-unmatched-python-shebangs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/bitmessagemain.py"
+               (("#!/usr/bin/env python2.7")
+                (string-append "#!" (which "python"))))
+             (substitute* "src/bitmessagecli.py"
+               (("#!/usr/bin/env python2.7.x")
+                (string-append "#!" (which "python"))))))
+         (add-after 'unpack 'fix-depends
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/depends.py"
+               (("libcrypto.so")
+                (string-append (assoc-ref inputs "openssl")
+                               "/lib/libcrypto.so")))))
+         (add-after 'unpack 'fix-local-files-in-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "src/proofofwork.py"
+               (("bitmsghash.so")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/bitmsghash.so")))))
+         (add-after 'unpack 'fix-pyelliptic
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "src/pyelliptic/openssl.py"
+               (("libcrypto.so")
+                (string-append (assoc-ref inputs "openssl")
+                               "/lib/libcrypto.so"))
+               (("libssl.so")
+                (string-append (assoc-ref inputs "openssl")
+                               "/lib/libssl.so")))))
+         ;; XXX: Make does not build and install bitmsghash, do it
+         ;; and place it in /lib.
+         (add-before 'build 'build-and-install-bitmsghash
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "src/bitmsghash")
+             (system* "make")
+             (chdir "../..")
+             (install-file "src/bitmsghash/bitmsghash.so"
+                           (string-append (assoc-ref outputs "out") "/lib"))
+             #t))
+         (add-after 'install 'wrap
+           (@@ (guix build python-build-system) wrap))
+         (delete 'check)))) ; not available
+    (license license:expat)
+    (description
+     "Distributed and trustless peer-to-peer communications protocol
+for sending encrypted messages to one person or many subscribers.")
+    (synopsis "Distributed peer-to-peer communication")
+    (home-page "https://bitmessage.org/")))
+
 ;;; messaging.scm ends here
-- 
2.9.3