diff options
author | Artur Cygan <arczicygan@gmail.com> | 2022-09-07 16:41:48 +0200 |
---|---|---|
committer | Artur Cygan <arczicygan@gmail.com> | 2022-09-08 23:02:35 +0200 |
commit | 6cabaded4ac05466c3837dfb9c359a32928d8b25 (patch) | |
tree | 744147df0320584c0a66f6a32adbe6ce9104926a /pkgs/tools/security/echidna | |
parent | eded7b8a2387e8c10aa45b951f47a13ca28def38 (diff) |
echidna: 1.7.3 -> 2.0.2
Diffstat (limited to 'pkgs/tools/security/echidna')
-rw-r--r-- | pkgs/tools/security/echidna/default.nix | 13 | ||||
-rw-r--r-- | pkgs/tools/security/echidna/echidna-update-aeson.patch | 38 |
2 files changed, 47 insertions, 4 deletions
diff --git a/pkgs/tools/security/echidna/default.nix b/pkgs/tools/security/echidna/default.nix index 88deac03a8f73..f6f1426ad5713 100644 --- a/pkgs/tools/security/echidna/default.nix +++ b/pkgs/tools/security/echidna/default.nix @@ -1,5 +1,4 @@ { lib -, fetchpatch , fetchFromGitHub # Haskell deps , mkDerivation, aeson, ansi-terminal, base, base16-bytestring, binary, brick @@ -8,19 +7,24 @@ , MonadRandom, mtl, optparse-applicative, process, random, stm, tasty , tasty-hunit, tasty-quickcheck, temporary, text, transformers , unix, unliftio , unliftio-core, unordered-containers, vector, vector-instances, vty -, wl-pprint-annotated, word8, yaml , extra, ListLike, semver +, wl-pprint-annotated, word8, yaml, extra, ListLike, semver }: mkDerivation rec { pname = "echidna"; - version = "1.7.3"; + version = "2.0.2"; src = fetchFromGitHub { owner = "crytic"; repo = "echidna"; rev = "v${version}"; - sha256 = "sha256-NkAAXYa1bbCNUO0eDM7LQbyC3//RRFAKmEHGH2Dhl/M="; + sha256 = "sha256-WmlQWgn4qfRmx3PdzY7wzT9AyU7Re2T1CWJ7yGjcVac="; }; + # NOTE: echidna is behind with aeson because of hevm, this patch updates + # the code to work with the major aeson update that broke the build + # it's temporary until hevm version 0.50.0 is released - https://github.com/ethereum/hevm/milestone/1 + patches = [ ./echidna-update-aeson.patch ]; + isLibrary = true; isExecutable = true; libraryHaskellDepends = [ @@ -51,4 +55,5 @@ mkDerivation rec { license = lib.licenses.agpl3Plus; maintainers = with lib.maintainers; [ arturcygan ]; platforms = lib.platforms.unix; + mainProgram = "echidna-test"; } diff --git a/pkgs/tools/security/echidna/echidna-update-aeson.patch b/pkgs/tools/security/echidna/echidna-update-aeson.patch new file mode 100644 index 0000000000000..a8c1b8f700c51 --- /dev/null +++ b/pkgs/tools/security/echidna/echidna-update-aeson.patch @@ -0,0 +1,38 @@ +diff --git a/lib/Echidna/Config.hs b/lib/Echidna/Config.hs +index f8d5777..3d761fe 100644 +--- a/lib/Echidna/Config.hs ++++ b/lib/Echidna/Config.hs +@@ -13,8 +13,8 @@ import Control.Monad.State (StateT(..), runStateT) + import Control.Monad.Trans (lift) + import Data.Bool (bool) + import Data.Aeson ++import Data.Aeson.KeyMap (keys) + import Data.Has (Has(..)) +-import Data.HashMap.Strict (keys) + import Data.HashSet (fromList, insert, difference) + import Data.Maybe (fromMaybe) + import Data.Text (isPrefixOf) +@@ -23,11 +23,13 @@ import EVM.Types (w256) + + import qualified Control.Monad.Fail as M (MonadFail(..)) + import qualified Data.ByteString as BS ++import qualified Data.Aeson.Key as Key ++import qualified Data.HashSet as HS + import qualified Data.List.NonEmpty as NE + import qualified Data.Yaml as Y + + import Echidna.Test +-import Echidna.Types.Campaign ++import Echidna.Types.Campaign + import Echidna.Mutator.Corpus (defaultMutationConsts) + import Echidna.Types.Config (EConfigWithUsage(..), EConfig(..)) + import Echidna.Types.Solidity +@@ -52,7 +54,7 @@ instance FromJSON EConfigWithUsage where + _ -> mempty + (c, ks) <- runStateT (parser v') $ fromList [] + let found = fromList (keys v') +- return $ EConfigWithUsage c (found `difference` ks) (ks `difference` found) ++ return $ EConfigWithUsage c (HS.map Key.toText $ found `difference` ks) (HS.map Key.toText $ ks `difference` found) + -- this parser runs in StateT and comes equipped with the following + -- equivalent unary operators: + -- x .:? k (Parser) <==> x ..:? k (StateT) |