1{
2 buildPythonPackage,
3 fetchFromGitHub,
4 lib,
5 future,
6 gcc,
7 llvmlite,
8 parameterized,
9 pycparser,
10 pyparsing,
11 z3-solver,
12 setuptools,
13}:
14let
15 commit = "cbc722eed8dc807955bd46f84886ae74d161dd0c";
16in
17buildPythonPackage {
18 pname = "miasm";
19 version = "0.1.5-unstable-2024-08-20";
20
21 pyproject = true;
22 build-system = [ setuptools ];
23
24 src = fetchFromGitHub {
25 owner = "cea-sec";
26 repo = "miasm";
27 rev = commit;
28 hash = "sha256-Ot11QuMtaJ8OQDAUgV3zVxTNp0kKc0Y9EXRZD96Caow=";
29 };
30
31 patches = [
32 # Use a valid semver as now required by setuptools
33 ./0001-setup.py-use-valid-semver.patch
34
35 # Removes the (unfree) IDAPython dependency
36 ./0002-core-remove-IDAPython-dependency.patch
37 ];
38
39 dependencies = [
40 future
41 llvmlite
42 parameterized
43 pycparser
44 pyparsing
45 z3-solver
46 ];
47
48 buildInputs = [ gcc ];
49
50 pythonImportsCheck = [ "miasm" ];
51
52 meta = {
53 description = "Reverse engineering framework in Python";
54 homepage = "https://github.com/cea-sec/miasm";
55 changelog = "https://github.com/cea-sec/miasm/blob/${commit}/CHANGELOG.md";
56 license = lib.licenses.gpl2Plus;
57 maintainers = with lib.maintainers; [ msanft ];
58 };
59}