Files
nixpkgs/pkgs/development/python-modules/r2pipe/default.nix
aszlig 97028f053c pythonPackages.r2pipe: Fix build
Regression introduced by 6556711c87.

The string start and end quoting styles have changed in the upstream
source code between version 1.4.2 and version 1.5.3, so the checkPhase
now results in the following error:

  ======================================================================
  ERROR: native (unittest.loader._FailedTest)
  ----------------------------------------------------------------------
  ImportError: Failed to import test module: native
  Traceback (most recent call last):
    File ".../unittest/loader.py", line 154, in loadTestsFromName
      module = __import__(module_name)
    File "/build/r2pipe-1.5.3/r2pipe/native.py", line 113, in <module>
      class RCore(Structure):  # 1
    File "/build/r2pipe-1.5.3/r2pipe/native.py", line 125, in RCore
      cmd_str, r_core_cmd_str = register(
    File "/build/r2pipe-1.5.3/r2pipe/native.py", line 108, in register
      method = WrappedRMethod(cname, args, ret)
    File "/build/r2pipe-1.5.3/r2pipe/native.py", line 53, in __init__
      r2 = r2lib()
    File "/build/r2pipe-1.5.3/r2pipe/native.py", line 27, in r2lib
      raise ImportError("No native r_core library")
  ImportError: No native r_core library

Signed-off-by: aszlig <aszlig@nix.build>
2021-01-09 16:01:54 -08:00

52 lines
1.4 KiB
Nix

{ stdenv
, lib
, python
, buildPythonPackage
, fetchPypi
, radare2
, coreutils
}:
buildPythonPackage rec {
pname = "r2pipe";
version = "1.5.3";
postPatch = let
r2lib = "${lib.getOutput "lib" radare2}/lib";
libr_core = "${r2lib}/libr_core${stdenv.hostPlatform.extensions.sharedLibrary}";
in
''
# Fix find_library, can be removed after
# https://github.com/NixOS/nixpkgs/issues/7307 is resolved.
substituteInPlace r2pipe/native.py --replace 'find_library("r_core")' "'${libr_core}'"
# Fix the default r2 executable
substituteInPlace r2pipe/open_sync.py --replace 'r2e = "radare2"' "r2e = '${radare2}/bin/radare2'"
substituteInPlace r2pipe/open_base.py --replace 'which("radare2")' "'${radare2}/bin/radare2'"
'';
src = fetchPypi {
inherit pname version;
sha256 = "8f3708195c8a6e91c5753940fd348cd821df1389d23b889b01b3e88acf407485";
};
# Tiny sanity check to make sure r2pipe finds radare2 (since r2pipe doesn't
# provide its own tests):
# Analyze ls with the fastest analysis and do nothing with the result.
postCheck = ''
${python.interpreter} <<EOF
import r2pipe
r2 = r2pipe.open('${coreutils}/bin/ls')
r2.cmd('a')
r2.quit()
EOF
'';
meta = with stdenv.lib; {
description = "Interact with radare2";
homepage = "https://github.com/radare/radare2-r2pipe";
license = licenses.mit;
maintainers = with maintainers; [ timokau ];
};
}