From c78d617fcd6a5320a6410020e2d150c094d3207d Mon Sep 17 00:00:00 2001
From: test <test@test.com>
Date: Tue, 14 Mar 2017 06:04:25 +0000
Subject: [PATCH] Add patch for sodium is already initialized issue

---
 debian/patches/series                              |  1 +
 ...e-init-once-around-library-initialization.patch | 66 ++++++++++++++++++++++
 2 files changed, 67 insertions(+)
 create mode 100644 debian/patches/series
 create mode 100644 debian/patches/use-init-once-around-library-initialization.patch

diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..002e94c
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+use-init-once-around-library-initialization.patch
diff --git a/debian/patches/use-init-once-around-library-initialization.patch b/debian/patches/use-init-once-around-library-initialization.patch
new file mode 100644
index 0000000..0691e9b
--- /dev/null
+++ b/debian/patches/use-init-once-around-library-initialization.patch
@@ -0,0 +1,66 @@
+From: "Lorenzo M. Catucci" <lorenzo@sancho.ccd.uniroma2.it>
+Description: This doesn't fails sodium_init()
+    By using init_once around library initialization
+
+* Require the fix release of 1.4, which is the first version providing
+  the init_once() call.
+* Wrap library initialization whith cff.init_once()
+  and use the correct test as specified in libsodium docs.
+
+Origin: upstream, https://github.com/pyca/pynacl
+Bug: https://github.com/pyca/pynacl/issues/186
+Bug-Debain: https://bugs.debian.org/857278
+Forwarded: https://github.com/pyca/pynacl/pull/199
+Applied-Upstream: https://github.com/pyca/pynacl/commit/b2408a3c64fd098c0f740a3b625e46e7995d9a04
+Last-Update: 2017-03-14
+
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index c652325..4a2cf88 100644
+--- a/setup.py
++++ b/setup.py
+@@ -46,8 +46,8 @@
+             "upgrade PyPy to use this library."
+         )
+ else:
+-    requirements.append("cffi>=1.1.0")
+-    setup_requirements.append("cffi>=1.1.0")
++    requirements.append("cffi>=1.4.1")
++    setup_requirements.append("cffi>=1.4.1")
+
+
+ def here(*paths):
+
+---
+ src/nacl/bindings/sodium_core.py | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/nacl/bindings/sodium_core.py b/src/nacl/bindings/sodium_core.py
+index e45130b..31af539 100644
+--- a/src/nacl/bindings/sodium_core.py
++++ b/src/nacl/bindings/sodium_core.py
+@@ -13,14 +13,18 @@
+ # limitations under the License.
+ from __future__ import absolute_import, division, print_function
+
+-from nacl._sodium import lib
++from nacl._sodium import ffi, lib
+ from nacl.exceptions import CryptoError
+
+
++def _sodium_init():
++    if lib.sodium_init() == -1:
++        raise CryptoError("Could not initialize sodium")
++
++
+ def sodium_init():
+     """
+     Initializes sodium, picking the best implementations available for this
+     machine.
+     """
+-    if lib.sodium_init() != 0:
+-        raise CryptoError("Could not initialize sodium")
++    ffi.init_once(_sodium_init, "libsodium")
-- 
2.11.0

