From 601adb32f63f6f76da006cd8e068f600e56f478f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Sun, 1 Oct 2017 13:27:10 +0200 Subject: [PATCH] [DEVOPS-393] Fix segfault in cryptonite See upstream issue at https://github.com/haskell-crypto/cryptonite/issues/193 --- default.nix | 8 +++----- pkgs/cryptonite-segfault-blake.patch | 13 +++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 pkgs/cryptonite-segfault-blake.patch diff --git a/default.nix b/default.nix index 05bb48daf0d..3b5ae8e09ed 100644 --- a/default.nix +++ b/default.nix @@ -14,9 +14,6 @@ with pkgs.lib; with pkgs.haskell.lib; let - addConfigureFlags = flags: drv: overrideCabal drv (drv: { - configureFlags = flags; - }); cardanoPkgs = ((import ./pkgs { inherit pkgs; }).override { overrides = self: super: { cardano-sl = overrideCabal super.cardano-sl (drv: { @@ -68,8 +65,9 @@ let postPatch = ":"; }); - # Gold linker fixes - cryptonite = addConfigureFlags ["--ghc-option=-optl-pthread"] super.cryptonite; + # TODO: get rid of pthreads option once cryptonite 0.25 is released + # DEVOPS-393: https://github.com/haskell-crypto/cryptonite/issues/193 + cryptonite = appendPatch (appendConfigureFlag super.cryptonite "--ghc-option=-optl-pthread") ./pkgs/cryptonite-segfault-blake.patch; # Darwin fixes upstreamed in nixpkgs commit 71bebd52547f4486816fd320bb3dc6314f139e67 hinotify = if pkgs.stdenv.isDarwin then self.hfsevents else super.hinotify; diff --git a/pkgs/cryptonite-segfault-blake.patch b/pkgs/cryptonite-segfault-blake.patch new file mode 100644 index 00000000000..e5c3bfae8fb --- /dev/null +++ b/pkgs/cryptonite-segfault-blake.patch @@ -0,0 +1,13 @@ +diff --git a/Crypto/Hash/Blake2b.hs b/Crypto/Hash/Blake2b.hs +index c22c284..19c68ba 100644 +--- a/Crypto/Hash/Blake2b.hs ++++ b/Crypto/Hash/Blake2b.hs +@@ -85,7 +85,7 @@ instance HashAlgorithm Blake2b_512 where + foreign import ccall unsafe "cryptonite_blake2b_init" + c_blake2b_init :: Ptr (Context a) -> Word32 -> IO () + +-foreign import ccall "cryptonite_blake2b_update" ++foreign import ccall unsafe "cryptonite_blake2b_update" + c_blake2b_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO () + + foreign import ccall unsafe "cryptonite_blake2b_finalize"