From 29573133569af11328ad9fd67c78f9a120605eca Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 21 Aug 2018 17:37:15 -0500 Subject: [PATCH] r2, r2-cutter: refactor and bump cutter to 1.7 --- .../default.nix => radare2/cutter.nix} | 19 +--- .../tools/analysis/radare2/default.nix | 90 +++---------------- .../tools/analysis/radare2/generic.nix | 75 ++++++++++++++++ .../tools/analysis/radare2/r2-for-cutter.nix | 16 ++++ pkgs/top-level/all-packages.nix | 10 ++- 5 files changed, 116 insertions(+), 94 deletions(-) rename pkgs/development/tools/analysis/{radare2-cutter/default.nix => radare2/cutter.nix} (68%) create mode 100644 pkgs/development/tools/analysis/radare2/generic.nix create mode 100644 pkgs/development/tools/analysis/radare2/r2-for-cutter.nix diff --git a/pkgs/development/tools/analysis/radare2-cutter/default.nix b/pkgs/development/tools/analysis/radare2/cutter.nix similarity index 68% rename from pkgs/development/tools/analysis/radare2-cutter/default.nix rename to pkgs/development/tools/analysis/radare2/cutter.nix index b427499ad99f..4269661a4ff3 100644 --- a/pkgs/development/tools/analysis/radare2-cutter/default.nix +++ b/pkgs/development/tools/analysis/radare2/cutter.nix @@ -4,22 +4,11 @@ # Qt , qtbase, qtsvg, qtwebengine # buildInputs -, radare2 +, r2-for-cutter , python3 }: let - r2 = radare2.overrideDerivation (o: { - name = "radare2-for-cutter-${version}"; - src = fetchFromGitHub { - owner = "radare"; - repo = "radare2"; - # XXX: The revision used here should match what Cutter uses as submodule. - # For now it's the revision cutter-git uses for r2. - rev = "c9ec8b54b9ba32ba6712f319825f8d032e573e68"; - sha256 = "04ri3wis8l1mbcp2gx419x7yfimljn7xa01izch71jy2h2mzk3z6"; - }; - }); - version = "1.6"; + version = "1.7"; in stdenv.mkDerivation rec { name = "radare2-cutter-${version}"; @@ -28,7 +17,7 @@ stdenv.mkDerivation rec { owner = "radareorg"; repo = "cutter"; rev = "v${version}"; - sha256 = "1ps52yf94yfnws3nn1iiwch2jy33dyvi7j47xkmh0m5fpdqi5xk7"; + sha256 = "0z9wzxd5hw0ivakrg3xiv4zx1rjj032hlmizq0pxj22xjrj1gg9n"; }; postUnpack = "export sourceRoot=$sourceRoot/src"; @@ -43,7 +32,7 @@ stdenv.mkDerivation rec { ''; nativeBuildInputs = [ qmake pkgconfig ]; - buildInputs = [ qtbase qtsvg qtwebengine r2 python3 ]; + buildInputs = [ qtbase qtsvg qtwebengine r2-for-cutter python3 ]; qmakeFlags = [ "CONFIG+=link_pkgconfig" diff --git a/pkgs/development/tools/analysis/radare2/default.nix b/pkgs/development/tools/analysis/radare2/default.nix index 43a05b5193d1..07a81516c986 100644 --- a/pkgs/development/tools/analysis/radare2/default.nix +++ b/pkgs/development/tools/analysis/radare2/default.nix @@ -1,82 +1,16 @@ -{stdenv, fetchFromGitHub -, ninja, meson , pkgconfig -, libusb, readline, libewf, perl, zlib, openssl -, gtk2 ? null, vte ? null, gtkdialog ? null -, python ? null -, ruby ? null -, lua ? null -, useX11, rubyBindings, pythonBindings, luaBindings -}: +{ callPackage, ...} @ args: -assert useX11 -> (gtk2 != null && vte != null && gtkdialog != null); -assert rubyBindings -> ruby != null; -assert pythonBindings -> python != null; - - -let - inherit (stdenv.lib) optional; +callPackage ./generic.nix (args // { # # DO NOT EDIT! Automatically generated by ./update.py - version_commit = "19004"; - gittap = "2.8.0"; - gittip = "a76b965410aba07b4ef8b96d90b25b271c2003dd"; - version = "2.8.0"; - sha256 = "1d9rkzc3vychy2h1bnywwx4why83rr18r0lvvl1cqx87ad5awcjk"; - cs_tip = "782ea67e17a391ca0d3faafdc365b335a1a8930a"; - cs_sha256 = "1maww4ir78a193pm3f8lr2kdkizi7rywn68ffa65ipyr7j4pl6i4"; + src_info = { + version_commit = "19004"; + gittap = "2.8.0"; + gittip = "a76b965410aba07b4ef8b96d90b25b271c2003dd"; + version = "2.8.0"; + sha256 = "1d9rkzc3vychy2h1bnywwx4why83rr18r0lvvl1cqx87ad5awcjk"; + cs_tip = "782ea67e17a391ca0d3faafdc365b335a1a8930a"; + cs_sha256 = "1maww4ir78a193pm3f8lr2kdkizi7rywn68ffa65ipyr7j4pl6i4"; + }; # -in -stdenv.mkDerivation rec { - name = "radare2-${version}"; - - src = fetchFromGitHub { - owner = "radare"; - repo = "radare2"; - rev = version; - inherit sha256; - }; - - postPatch = let - capstone = fetchFromGitHub { - owner = "aquynh"; - repo = "capstone"; - # version from $sourceRoot/shlr/Makefile - rev = cs_tip; - sha256 = cs_sha256; - }; - in '' - if ! grep -F "CS_TIP=${cs_tip}" shlr/Makefile; then echo "CS_TIP mismatch"; exit 1; fi - # When using meson, it expects capstone source relative to build directory - mkdir -p build/shlr - ln -s ${capstone} build/shlr/capstone - ''; - - postInstall = '' - ln -s $out/bin/radare2 $out/bin/r2 - install -D -m755 $src/binr/r2pm/r2pm $out/bin/r2pm - ''; - - mesonFlags = [ - "-Dr2_version_commit=${version_commit}" - "-Dr2_gittap=${gittap}" - "-Dr2_gittip=${gittip}" - ]; - - enableParallelBuilding = true; - - nativeBuildInputs = [ pkgconfig ninja meson ]; - buildInputs = [ readline libusb libewf perl zlib openssl] - ++ optional useX11 [gtkdialog vte gtk2] - ++ optional rubyBindings [ruby] - ++ optional pythonBindings [python] - ++ optional luaBindings [lua]; - - meta = { - description = "unix-like reverse engineering framework and commandline tools"; - homepage = http://radare.org/; - license = stdenv.lib.licenses.gpl2Plus; - maintainers = with stdenv.lib.maintainers; [raskin makefu mic92]; - platforms = with stdenv.lib.platforms; linux; - inherit version; - }; -} +}) diff --git a/pkgs/development/tools/analysis/radare2/generic.nix b/pkgs/development/tools/analysis/radare2/generic.nix new file mode 100644 index 000000000000..074cbdddbbfd --- /dev/null +++ b/pkgs/development/tools/analysis/radare2/generic.nix @@ -0,0 +1,75 @@ +{stdenv, fetchFromGitHub +, src_info, callPackage +, ninja, meson , pkgconfig +, libusb, readline, libewf, perl, zlib, openssl +, gtk2 ? null, vte ? null, gtkdialog ? null +, python ? null +, ruby ? null +, lua ? null +, useX11, rubyBindings, pythonBindings, luaBindings +}: + +assert useX11 -> (gtk2 != null && vte != null && gtkdialog != null); +assert rubyBindings -> ruby != null; +assert pythonBindings -> python != null; + + +let + inherit (stdenv.lib) optional; +in stdenv.mkDerivation (with src_info; rec { + name = "radare2-${version}"; + + src = fetchFromGitHub { + owner = "radare"; + repo = "radare2"; + rev = version; + inherit sha256; + }; + + postPatch = let + capstone = fetchFromGitHub { + owner = "aquynh"; + repo = "capstone"; + # version from $sourceRoot/shlr/Makefile + rev = cs_tip; + sha256 = cs_sha256; + }; + in '' + if ! grep -F "CS_TIP=${cs_tip}" shlr/Makefile; then echo "CS_TIP mismatch"; exit 1; fi + # When using meson, it expects capstone source relative to build directory + mkdir -p build/shlr + ln -s ${capstone} build/shlr/capstone + ''; + + postInstall = '' + ln -s $out/bin/radare2 $out/bin/r2 + install -D -m755 $src/binr/r2pm/r2pm $out/bin/r2pm + ''; + + mesonFlags = [ + "-Dr2_version_commit=${version_commit}" + "-Dr2_gittap=${gittap}" + "-Dr2_gittip=${gittip}" + # 2.8.0 expects this, but later it becomes an option with default=false. + "-Dcapstone_in_builddir=true" + ]; + + enableParallelBuilding = true; + + nativeBuildInputs = [ pkgconfig ninja meson ]; + buildInputs = [ readline libusb libewf perl zlib openssl] + ++ optional useX11 [gtkdialog vte gtk2] + ++ optional rubyBindings [ruby] + ++ optional pythonBindings [python] + ++ optional luaBindings [lua]; + + meta = { + description = "unix-like reverse engineering framework and commandline tools"; + homepage = http://radare.org/; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = with stdenv.lib.maintainers; [raskin makefu mic92]; + platforms = with stdenv.lib.platforms; linux; + inherit version; + }; +}) + diff --git a/pkgs/development/tools/analysis/radare2/r2-for-cutter.nix b/pkgs/development/tools/analysis/radare2/r2-for-cutter.nix new file mode 100644 index 000000000000..e63d4442becd --- /dev/null +++ b/pkgs/development/tools/analysis/radare2/r2-for-cutter.nix @@ -0,0 +1,16 @@ +{ callPackage, ...} @ args: + +callPackage ./generic.nix (args // { + # + # DO NOT EDIT! Automatically generated by ./update.py + src_info = { + version_commit = "19256"; + gittap = "2.8.0-118-gb0547831f"; + gittip = "b0547831f127b7357e3c93bc43933482a4d6213b"; + version = "2.9.0-git"; + sha256 = "1ix42kipd1aayb494ajbxawzc1cwikm9fxk343d1kchxx4a30a1m"; + cs_tip = "782ea67e17a391ca0d3faafdc365b335a1a8930a"; + cs_sha256 = "1maww4ir78a193pm3f8lr2kdkizi7rywn68ffa65ipyr7j4pl6i4"; + }; + # +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 302ff26ed40f..f32d98a6d295 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8540,7 +8540,15 @@ with pkgs; rubyBindings = config.radare.rubyBindings or false; luaBindings = config.radare.luaBindings or false; }; - radare2-cutter = libsForQt5.callPackage ../development/tools/analysis/radare2-cutter { }; + r2-for-cutter = callPackage ../development/tools/analysis/radare2/r2-for-cutter.nix { + inherit (gnome2) vte; + lua = lua5; + useX11 = config.radare.useX11 or false; + pythonBindings = config.radare.pythonBindings or false; + rubyBindings = config.radare.rubyBindings or false; + luaBindings = config.radare.luaBindings or false; + }; + radare2-cutter = libsForQt5.callPackage ../development/tools/analysis/radare2/cutter.nix { }; ragel = ragelStable;