python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / tools / analysis / rizin / default.nix
blobdad7193dd25d762ba34767206f2331b5f44bdba1
1 { lib
2 , stdenv
3 , fetchurl
4 , pkg-config
5 , libusb-compat-0_1
6 , readline
7 , libewf
8 , perl
9 , zlib
10 , openssl
11 , libuv
12 , file
13 , libzip
14 , lz4
15 , xxHash
16 , meson
17 , python3
18 , cmake
19 , ninja
20 , capstone
21 , tree-sitter
24 stdenv.mkDerivation rec {
25   pname = "rizin";
26   version = "0.4.1";
28   src = fetchurl {
29     url = "https://github.com/rizinorg/rizin/releases/download/v${version}/rizin-src-v${version}.tar.xz";
30     sha256 = "sha256-Zp2Va5l4IKNuQjzzXUgqqZhJJUuWWM72hERZkS39v7g=";
31   };
33   mesonFlags = [
34     "-Duse_sys_capstone=enabled"
35     "-Duse_sys_magic=enabled"
36     "-Duse_sys_libzip=enabled"
37     "-Duse_sys_zlib=enabled"
38     "-Duse_sys_xxhash=enabled"
39     "-Duse_sys_lz4=enabled"
40     "-Duse_sys_openssl=enabled"
41     "-Duse_sys_tree_sitter=enabled"
42   ];
44   nativeBuildInputs = [
45     pkg-config
46     meson
47     (python3.withPackages (pp: with pp; [
48       pyyaml
49     ]))
50     ninja
51     cmake
52   ];
54   # meson's find_library seems to not use our compiler wrapper if static parameter
55   # is either true/false... We work around by also providing LIBRARY_PATH
56   preConfigure = ''
57     LIBRARY_PATH=""
58     for b in ${toString (map lib.getLib buildInputs)}; do
59       if [[ -d "$b/lib" ]]; then
60         LIBRARY_PATH="$b/lib''${LIBRARY_PATH:+:}$LIBRARY_PATH"
61       fi
62     done
63     export LIBRARY_PATH
64   '' + lib.optionalString stdenv.isDarwin ''
65     substituteInPlace binrz/rizin/macos_sign.sh \
66       --replace 'codesign' '# codesign'
67   '';
69   buildInputs = [
70     file
71     libzip
72     capstone
73     readline
74     libusb-compat-0_1
75     libewf
76     perl
77     zlib
78     lz4
79     openssl
80     libuv
81     tree-sitter
82     xxHash
83   ];
85   postPatch = ''
86     # find_installation without arguments uses Meson’s Python interpreter,
87     # which does not have any extra modules.
88     # https://github.com/mesonbuild/meson/pull/9904
89     substituteInPlace meson.build \
90       --replace "import('python').find_installation()" "find_program('python3')"
91   '';
93   meta = {
94     description = "UNIX-like reverse engineering framework and command-line toolset.";
95     homepage = "https://rizin.re/";
96     license = lib.licenses.gpl3Plus;
97     maintainers = with lib.maintainers; [ raskin makefu mic92 ];
98     platforms = with lib.platforms; unix;
99   };