7e47f3658e
GitOrigin-RevId: 1925c603f17fc89f4c8f6bf6f631a802ad85d784
121 lines
2.5 KiB
Nix
121 lines
2.5 KiB
Nix
{
|
|
stdenv,
|
|
lib,
|
|
fetchpatch,
|
|
mkDerivation,
|
|
fetchFromGitHub,
|
|
haskellPackages,
|
|
slither-analyzer,
|
|
}:
|
|
|
|
mkDerivation (
|
|
rec {
|
|
pname = "echidna";
|
|
version = "2.2.3";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "crytic";
|
|
repo = "echidna";
|
|
rev = "v${version}";
|
|
sha256 = "sha256-NJ2G6EkexYE4P3GD7PZ+lLEs1dqnoqIB2zfAOD5SQ8M=";
|
|
};
|
|
|
|
patches = [
|
|
# Support cross platform vty 6.x with vty-crossplatform
|
|
# https://github.com/crytic/echidna/pull/1290
|
|
(fetchpatch {
|
|
url = "https://github.com/crytic/echidna/commit/2913b027d7e793390ed489ef6a47d23ec9b3c800.patch";
|
|
hash = "sha256-5CGD9nDbDUTG869xUybWYSvGRsrm7JP7n0WMBNYfayw=";
|
|
})
|
|
];
|
|
|
|
isExecutable = true;
|
|
|
|
libraryToolDepends = with haskellPackages; [ haskellPackages.hpack ];
|
|
|
|
executableHaskellDepends = with haskellPackages; [
|
|
# package.yaml - dependencies
|
|
base
|
|
aeson
|
|
async
|
|
base16-bytestring
|
|
binary
|
|
bytestring
|
|
code-page
|
|
containers
|
|
data-bword
|
|
data-dword
|
|
deepseq
|
|
extra
|
|
directory
|
|
exceptions
|
|
filepath
|
|
hashable
|
|
hevm
|
|
html-entities
|
|
ListLike
|
|
MonadRandom
|
|
mtl
|
|
optparse-applicative
|
|
optics
|
|
optics-core
|
|
process
|
|
random
|
|
rosezipper
|
|
semver
|
|
split
|
|
text
|
|
transformers
|
|
time
|
|
unliftio
|
|
utf8-string
|
|
vector
|
|
with-utf8
|
|
word-wrap
|
|
yaml
|
|
http-conduit
|
|
html-conduit
|
|
warp
|
|
wai-extra
|
|
xml-conduit
|
|
strip-ansi-escape
|
|
# package.yaml - dependencies when "!os(windows)"
|
|
brick
|
|
unix
|
|
vty
|
|
];
|
|
|
|
# Note: there is also a runtime dependency of slither-analyzer. So, let's include it.
|
|
executableSystemDepends = [ slither-analyzer ];
|
|
|
|
preConfigure = ''
|
|
hpack
|
|
'';
|
|
|
|
shellHook = "hpack";
|
|
|
|
doHaddock = false;
|
|
|
|
# tests depend on a specific version of solc
|
|
doCheck = false;
|
|
|
|
description = "Ethereum smart contract fuzzer";
|
|
homepage = "https://github.com/crytic/echidna";
|
|
license = lib.licenses.agpl3Plus;
|
|
maintainers = with lib.maintainers; [
|
|
arturcygan
|
|
hellwolf
|
|
];
|
|
platforms = lib.platforms.unix;
|
|
mainProgram = "echidna-test";
|
|
|
|
}
|
|
// lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) {
|
|
|
|
# https://github.com/NixOS/nixpkgs/pull/304352
|
|
postInstall = with haskellPackages; ''
|
|
remove-references-to -t ${warp.out} "$out/bin/echidna"
|
|
remove-references-to -t ${wreq.out} "$out/bin/echidna"
|
|
'';
|
|
}
|
|
)
|