about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2024-04-08 09:45:05 +0200
committerGitHub <noreply@github.com>2024-04-08 09:45:05 +0200
commit72a365b6172c9eae4fc1e0ea405715c8b0a90c19 (patch)
tree349b9aec7bac0a7d9a3ac921c6a8685d30d2a998
parentc740c98fc17401d49fbd9bae474d0919f212ea0a (diff)
parent4479cc7cff3dfe6b71f5cc4b7f5ee362f0b2cf11 (diff)
Merge pull request #245527 from arcz/capstone-5.0
capstone: 4.0.2 -> 5.0.1
-rw-r--r--pkgs/development/libraries/capstone/4.nix35
-rw-r--r--pkgs/development/libraries/capstone/default.nix8
-rw-r--r--pkgs/development/python-modules/capstone/4.nix40
-rw-r--r--pkgs/development/python-modules/capstone/default.nix4
-rw-r--r--pkgs/development/python-modules/pyocd/default.nix4
-rw-r--r--pkgs/development/tools/misc/edb/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix1
-rw-r--r--pkgs/top-level/python-packages.nix3
8 files changed, 91 insertions, 8 deletions
diff --git a/pkgs/development/libraries/capstone/4.nix b/pkgs/development/libraries/capstone/4.nix
new file mode 100644
index 0000000000000..dd31e9feaf621
--- /dev/null
+++ b/pkgs/development/libraries/capstone/4.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenv
+, cmake
+, fetchFromGitHub
+, fixDarwinDylibNames
+}:
+
+stdenv.mkDerivation rec {
+  pname = "capstone";
+  version = "4.0.2";
+
+  src = fetchFromGitHub {
+    owner = "capstone-engine";
+    repo = "capstone";
+    rev = version;
+    sha256 = "sha256-XMwQ7UaPC8YYu4yxsE4bbR3leYPfBHu5iixSLz05r3g=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals stdenv.isDarwin [
+    fixDarwinDylibNames
+  ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Advanced disassembly library";
+    homepage    = "http://www.capstone-engine.org";
+    license     = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ thoughtpolice ris ];
+    mainProgram = "cstool";
+    platforms   = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/libraries/capstone/default.nix b/pkgs/development/libraries/capstone/default.nix
index ff33c7bd0979d..b78b007bc5978 100644
--- a/pkgs/development/libraries/capstone/default.nix
+++ b/pkgs/development/libraries/capstone/default.nix
@@ -7,15 +7,17 @@
 
 stdenv.mkDerivation rec {
   pname = "capstone";
-  version = "4.0.2";
+  version = "5.0.1";
 
   src = fetchFromGitHub {
-    owner = "aquynh";
+    owner = "capstone-engine";
     repo = "capstone";
     rev = version;
-    sha256 = "sha256-XMwQ7UaPC8YYu4yxsE4bbR3leYPfBHu5iixSLz05r3g=";
+    sha256 = "sha256-kKmL5sae9ruWGu1gas1mel9qM52qQOD+zLj8cRE3isg=";
   };
 
+  cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
+
   nativeBuildInputs = [
     cmake
   ] ++ lib.optionals stdenv.isDarwin [
diff --git a/pkgs/development/python-modules/capstone/4.nix b/pkgs/development/python-modules/capstone/4.nix
new file mode 100644
index 0000000000000..7c79cfe819428
--- /dev/null
+++ b/pkgs/development/python-modules/capstone/4.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, capstone_4
+, stdenv
+, setuptools
+, pythonAtLeast
+}:
+
+buildPythonPackage {
+  pname = "capstone";
+  inherit (capstone_4) version src;
+
+  sourceRoot = "source/bindings/python";
+
+  postPatch = ''
+    ln -s ${capstone_4}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
+    ln -s ${capstone_4}/lib/libcapstone${stdenv.targetPlatform.extensions.staticLibrary} prebuilt/
+    substituteInPlace setup.py --replace manylinux1 manylinux2014
+  '';
+
+  # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
+  # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
+  setupPyBuildFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--plat-name" "macosx_11_0" ];
+
+  propagatedBuildInputs = [ setuptools ];
+
+  checkPhase = ''
+    mv capstone capstone.hidden
+    patchShebangs test_*
+    make check
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.capstone-engine.org/";
+    license = licenses.bsdOriginal;
+    description = "Python bindings for Capstone disassembly engine";
+    maintainers = with maintainers; [ bennofs ris ];
+    broken = pythonAtLeast "3.12"; # uses distutils
+  };
+}
diff --git a/pkgs/development/python-modules/capstone/default.nix b/pkgs/development/python-modules/capstone/default.nix
index be8fa4fba9f46..405dbe767da6c 100644
--- a/pkgs/development/python-modules/capstone/default.nix
+++ b/pkgs/development/python-modules/capstone/default.nix
@@ -17,9 +17,11 @@ buildPythonPackage rec {
   src = capstone.src;
   sourceRoot = "${src.name}/bindings/python";
 
+  # libcapstone.a is not built with BUILD_SHARED_LIBS. For some reason setup.py
+  # checks if it exists but it is not really needed. Most likely a bug in setup.py.
   postPatch = ''
     ln -s ${capstone}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
-    ln -s ${capstone}/lib/libcapstone.a prebuilt/
+    touch prebuilt/libcapstone${stdenv.targetPlatform.extensions.staticLibrary}
     substituteInPlace setup.py --replace manylinux1 manylinux2014
   '';
 
diff --git a/pkgs/development/python-modules/pyocd/default.nix b/pkgs/development/python-modules/pyocd/default.nix
index 19980b7c0ca21..1f09ed696da04 100644
--- a/pkgs/development/python-modules/pyocd/default.nix
+++ b/pkgs/development/python-modules/pyocd/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , fetchpatch
-, capstone
+, capstone_4
 , cmsis-pack-manager
 , colorama
 , importlib-metadata
@@ -54,7 +54,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    capstone
+    capstone_4
     cmsis-pack-manager
     colorama
     importlib-metadata
diff --git a/pkgs/development/tools/misc/edb/default.nix b/pkgs/development/tools/misc/edb/default.nix
index d6fac75190f6e..a1f9120f314c1 100644
--- a/pkgs/development/tools/misc/edb/default.nix
+++ b/pkgs/development/tools/misc/edb/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, boost, capstone
+{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, boost, capstone_4
 , double-conversion, graphviz, qtxmlpatterns }:
 
 mkDerivation rec {
@@ -15,7 +15,7 @@ mkDerivation rec {
 
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ boost.dev capstone double-conversion graphviz qtxmlpatterns ];
+  buildInputs = [ boost.dev capstone_4 double-conversion graphviz qtxmlpatterns ];
 
   postPatch = ''
     # Remove CMAKE_INSTALL_PREFIX from DEFAULT_PLUGIN_PATH otherwise the nix store path will appear twice.
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 6f1a508e7625b..8fbc2701b4626 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4553,6 +4553,7 @@ with pkgs;
   candle = libsForQt5.callPackage ../applications/misc/candle { };
 
   capstone = callPackage ../development/libraries/capstone { };
+  capstone_4 = callPackage ../development/libraries/capstone/4.nix { };
 
   keystone = callPackage ../development/libraries/keystone { };
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 761b4c71721fe..f9a53e944bdf5 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1887,6 +1887,9 @@ self: super: with self; {
   capstone = callPackage ../development/python-modules/capstone {
     inherit (pkgs) capstone;
   };
+  capstone_4 = callPackage ../development/python-modules/capstone/4.nix {
+    inherit (pkgs) capstone_4;
+  };
 
   captcha = callPackage ../development/python-modules/captcha { };