From 591c8050b22a4a6cede1da5acbe4cb8ad152c02e Mon Sep 17 00:00:00 2001 From: wxt <3264117476@qq.com> Date: Tue, 22 Oct 2024 12:29:02 +0800 Subject: [PATCH 1/3] grap: move to by-name --- .../security/grap/default.nix => by-name/gr/grap/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{tools/security/grap/default.nix => by-name/gr/grap/package.nix} (100%) diff --git a/pkgs/tools/security/grap/default.nix b/pkgs/by-name/gr/grap/package.nix similarity index 100% rename from pkgs/tools/security/grap/default.nix rename to pkgs/by-name/gr/grap/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e2687074c61eb..018aeb03d2084 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -36600,8 +36600,6 @@ with pkgs; gplates = libsForQt5.callPackage ../applications/science/misc/gplates { }; - grap = callPackage ../tools/security/grap { }; - gravit = callPackage ../applications/science/astronomy/gravit { }; golly = callPackage ../applications/science/misc/golly { From 950f5fb96dbd42c91425b2f4db17005c89a5eee1 Mon Sep 17 00:00:00 2001 From: wxt <3264117476@qq.com> Date: Tue, 22 Oct 2024 12:29:45 +0800 Subject: [PATCH 2/3] grap: nixfmt --- pkgs/by-name/gr/grap/package.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/gr/grap/package.nix b/pkgs/by-name/gr/grap/package.nix index 7f8d931fbb6a4..3fe8c9bb12300 100644 --- a/pkgs/by-name/gr/grap/package.nix +++ b/pkgs/by-name/gr/grap/package.nix @@ -1,4 +1,15 @@ -{ lib, stdenv, fetchFromGitHub, boost, libseccomp, flex, swig, bison, cmake, python3 }: +{ + lib, + stdenv, + fetchFromGitHub, + boost, + libseccomp, + flex, + swig, + bison, + cmake, + python3, +}: stdenv.mkDerivation rec { pname = "grap"; From 6b1c0e677a0db1c5392dc8a8d8703cf1aadf2d69 Mon Sep 17 00:00:00 2001 From: wxt <3264117476@qq.com> Date: Tue, 22 Oct 2024 12:50:44 +0800 Subject: [PATCH 3/3] grap: fix build --- pkgs/by-name/gr/grap/package.nix | 47 ++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/pkgs/by-name/gr/grap/package.nix b/pkgs/by-name/gr/grap/package.nix index 3fe8c9bb12300..f37521ae49cdf 100644 --- a/pkgs/by-name/gr/grap/package.nix +++ b/pkgs/by-name/gr/grap/package.nix @@ -8,26 +8,32 @@ swig, bison, cmake, - python3, + python3Packages, + makeShellWrapper, }: -stdenv.mkDerivation rec { +python3Packages.buildPythonPackage rec { pname = "grap"; version = "1.3.1"; + pyproject = false; src = fetchFromGitHub { owner = "QuoSecGmbH"; repo = "grap"; - rev = "v${version}"; - sha256 = "1fkdi7adfffxg1k4h6r9i69i3wi93s44c1j4cvr69blxsfh0mcnc"; + rev = "refs/tags/v${version}"; + hash = "sha256-zLIKoNOdrmTyZkQGRogeKfIRk4kpG0hmeN0519SJbbo="; }; + dependencies = [ + python3Packages.setuptools + ]; + nativeBuildInputs = [ bison cmake flex - python3 swig + makeShellWrapper ]; buildInputs = [ @@ -38,16 +44,32 @@ stdenv.mkDerivation rec { strictDeps = true; cmakeFlags = [ - "-DPYTHON_SITE_DIR=$out/${python3.sitePackages}" + "-DPYTHON_SITE_DIR=${placeholder "out"}/${python3Packages.python.sitePackages}" "../src" ]; postPatch = '' - substituteInPlace src/tools/grap-match/CMakeLists.txt --replace "/usr/local/bin" "$out/bin" - substituteInPlace src/tools/grap/CMakeLists.txt --replace "/usr/local/bin" "$out/bin" + substituteInPlace src/tools/grap-match/CMakeLists.txt --replace-fail "/usr/local/bin" "$out/bin" + + substituteInPlace src/tools/grap/CMakeLists.txt --replace-fail "/usr/local/bin" "$out/bin" + + substituteInPlace src/bindings/python/CMakeLists.txt --replace-fail "distutils" "setuptools._distutils" + + substituteInPlace src/tools/setup.py --replace-fail "distutils.core" "setuptools" + ''; + + postInstall = '' + substituteInPlace $out/bin/grap --replace-fail "/usr/bin/env python3" "${lib.getExe python3Packages.python}" + wrapProgram $out/bin/grap --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}" + + cd $out/${python3Packages.python.sitePackages} + mv pygrap.so _pygrap.so + substituteInPlace pygrap.py \ + --replace-fail "import imp" "import importlib" \ + --replace-fail "imp." "importlib." ''; - meta = with lib; { + meta = { description = "Define and match graph patterns within binaries"; longDescription = '' grap takes patterns and binary files, uses a Casptone-based disassembler to obtain the control flow graphs from the binaries, then matches the patterns against them. @@ -55,8 +77,9 @@ stdenv.mkDerivation rec { Patterns are user-defined graphs with instruction conditions ("opcode is xor and arg1 is eax") and repetition conditions (3 identical instructions, basic blocks...). ''; homepage = "https://github.com/QuoSecGmbH/grap/"; - license = licenses.mit; - maintainers = [ maintainers.s1341 ]; - platforms = platforms.linux; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ s1341 ]; + platforms = lib.platforms.linux; + mainProgram = "grap"; }; }