diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/gdbgui/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/misc/gdbgui/default.nix | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/misc/gdbgui/default.nix b/nixpkgs/pkgs/development/tools/misc/gdbgui/default.nix new file mode 100644 index 000000000000..a82ff178c9eb --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/gdbgui/default.nix @@ -0,0 +1,96 @@ +{ lib +, buildPythonApplication +, fetchPypi +, gdb +, flask +, six +, bidict +, python-engineio +, python-socketio +, flask-socketio +, flask-compress +, pygdbmi +, pygments +, gevent +, gevent-websocket +, eventlet +, }: + +let + # gdbgui only works with the latest previous major version of flask-socketio, + # which depends itself on the latest previous major versions of dependencies. + python-engineio' = python-engineio.overridePythonAttrs (old: rec { + version = "3.14.2"; + src = fetchPypi { + inherit (old) pname; + inherit version; + sha256 = "119halljynqsgswlhlh750qv56js1p7j52sc0nbwxh8450zmbd7a"; + }; + propagatedBuildInputs = [ six ]; + doCheck = false; + }); + python-socketio' = python-socketio.overridePythonAttrs (old: rec { + version = "4.6.1"; + src = fetchPypi { + inherit (old) pname; + inherit version; + sha256 = "047syhrrxh327p0fnab0d1zy25zijnj3gs1qg3kjpsy1jaj5l7yd"; + }; + propagatedBuildInputs = [ bidict python-engineio' ]; + doCheck = false; + }); + flask-socketio' = flask-socketio.overridePythonAttrs (old: rec { + version = "4.3.2"; + src = fetchPypi { + inherit (old) pname; + inherit version; + sha256 = "0s2xs9kv9cbwy8bcxszhdwlcb9ldv0fj33lwilf5vypj0wsin01p"; + }; + propagatedBuildInputs = [ flask python-socketio' ]; + doCheck = false; + }); +in +buildPythonApplication rec { + pname = "gdbgui"; + version = "0.14.0.2"; + + buildInputs = [ gdb ]; + propagatedBuildInputs = [ + flask + flask-socketio' + flask-compress + pygdbmi + pygments + gevent + gevent-websocket + eventlet + ]; + + src = fetchPypi { + inherit pname version; + sha256 = "1v6wwsncgnhlg5c7gsmzcp52hfblfnz5kf5pk4d0zybflsxak02d"; + }; + + postPatch = '' + echo ${version} > gdbgui/VERSION.txt + # remove upper version bound + sed -ie 's!, <.*"!"!' setup.py + sed -i 's/greenlet==/greenlet>=/' setup.py + ''; + + postInstall = '' + wrapProgram $out/bin/gdbgui \ + --prefix PATH : ${lib.makeBinPath [ gdb ]} + ''; + + # tests do not work without stdout/stdin + doCheck = false; + + meta = with lib; { + description = "A browser-based frontend for GDB"; + homepage = "https://www.gdbgui.com/"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ yrashk dump_stack ]; + }; +} |