summary refs log tree commit diff
path: root/pkgs/development/tools/misc/pwndbg
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2019-10-16 09:55:01 +0200
committerFrederik Rietdijk <fridh@fridh.nl>2019-10-16 10:01:44 +0200
commit27a9800e8539057031ae963177e3b8df795584ca (patch)
treea861a902569ac6f5d4365c7d48055b8748252fd5 /pkgs/development/tools/misc/pwndbg
parent80ac778c06aae85b77904a2f6b7ce950c4356cf6 (diff)
downloadnixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar.gz
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar.bz2
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar.lz
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar.xz
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.tar.zst
nixpkgs-27a9800e8539057031ae963177e3b8df795584ca.zip
pwndbg: fix runtime python deps, fixes #71071
pwndbg is a Python module for gdb. The built-in interpreter is used and
pwndbg offers additional routines. Packaging this is tricky because that
interpreter needs to be used. Using `python3.withPackages` won't work.
By setting `NIX_PYTHONPATH`, the interpreter should pick up pwndbg and
its dependencies.

If `NIX_PYTHONPATH` does not function we can fall back to `PYTHONPATH`.
An example of when that won't work is if pwndbg runs a script of itself
in a subshell. `NIX_PYTHONPATH` would be  unset, but `PYTHONPATH` not.
Diffstat (limited to 'pkgs/development/tools/misc/pwndbg')
-rw-r--r--pkgs/development/tools/misc/pwndbg/default.nix52
1 files changed, 21 insertions, 31 deletions
diff --git a/pkgs/development/tools/misc/pwndbg/default.nix b/pkgs/development/tools/misc/pwndbg/default.nix
index 7182144fd20..9af43e4b747 100644
--- a/pkgs/development/tools/misc/pwndbg/default.nix
+++ b/pkgs/development/tools/misc/pwndbg/default.nix
@@ -1,33 +1,12 @@
 { stdenv
+, python3
 , fetchFromGitHub
 , makeWrapper
 , gdb
-, future
-, isort
-, psutil
-, pycparser
-, pyelftools
-, python-ptrace
-, ROPGadget
-, six
-, unicorn
-, pygments
-, }:
+}:
 
-stdenv.mkDerivation rec {
-  pname = "pwndbg";
-  version = "2019.01.25";
-
-  src = fetchFromGitHub {
-    owner = "pwndbg";
-    repo = "pwndbg";
-    rev = version;
-    sha256 = "0k7n6pcrj62ccag801yzf04a9mj9znghpkbnqwrzz0qn3rs42vgs";
-  };
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  propagatedBuildInputs = [
+let
+  pythonPath = with python3.pkgs; makePythonPath [
     future
     isort
     psutil
@@ -40,16 +19,27 @@ stdenv.mkDerivation rec {
     pygments
   ];
 
+in stdenv.mkDerivation rec {
+  pname = "pwndbg";
+  version = "2019.01.25";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "pwndbg";
+    repo = "pwndbg";
+    rev = version;
+    sha256 = "0k7n6pcrj62ccag801yzf04a9mj9znghpkbnqwrzz0qn3rs42vgs";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
   installPhase = ''
     mkdir -p $out/share/pwndbg
     cp -r *.py pwndbg $out/share/pwndbg
+    chmod +x $out/share/pwndbg/gdbinit.py
     makeWrapper ${gdb}/bin/gdb $out/bin/pwndbg \
-      --add-flags "-q -x $out/share/pwndbg/gdbinit.py"
-  '';
-
-  preFixup = ''
-    sed -i "/import sys/a import sys; sys.path[0:0] = '$PYTHONPATH'.split(':')" \
-      $out/share/pwndbg/gdbinit.py
+      --add-flags "-q -x $out/share/pwndbg/gdbinit.py" \
+      --set NIX_PYTHONPATH ${pythonPath}
   '';
 
   meta = with stdenv.lib; {