about summary refs log tree commit diff
path: root/pkgs/development/python-modules/islpy/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/islpy/default.nix')
-rw-r--r--pkgs/development/python-modules/islpy/default.nix76
1 files changed, 53 insertions, 23 deletions
diff --git a/pkgs/development/python-modules/islpy/default.nix b/pkgs/development/python-modules/islpy/default.nix
index ca84beae2eeff..d111e6b523d27 100644
--- a/pkgs/development/python-modules/islpy/default.nix
+++ b/pkgs/development/python-modules/islpy/default.nix
@@ -1,41 +1,71 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, isl
-, pybind11
-, pytestCheckHook
-, pythonOlder
-, six
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+
+  setuptools,
+  cmake,
+  nanobind,
+  ninja,
+  pcpp,
+  scikit-build,
+  isl,
+
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "islpy";
-  version = "2023.2.5";
-  format = "setuptools";
+  version = "2024.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "sha256-3XQ5i682k4q7fCqdmCjMGi5UnGyASFzsiwaymr+q0Y8=";
+  src = fetchFromGitHub {
+    owner = "inducer";
+    repo = "islpy";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-N5XI6V3BvNobCh7NAvtzVejtDMnlcb31S5gseyab1T0=";
   };
 
-  postConfigure = ''
-    substituteInPlace setup.py \
-      --replace "\"pytest>=2\"," ""
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+        --replace-fail "setuptools>=42,<64;python_version<'3.12'" "setuptools>=42"
   '';
 
-  buildInputs = [ isl pybind11 ];
-  propagatedBuildInputs = [ six ];
+  build-system = [
+    setuptools
+    cmake
+    nanobind
+    ninja
+    pcpp
+    scikit-build
+  ];
+
+  buildInputs = [ isl ];
+
+  dontUseCmakeConfigure = true;
+
+  preConfigure = ''
+    python ./configure.py \
+        --no-use-shipped-isl \
+        --isl-inc-dir=${lib.getDev isl}/include \
+  '';
+
+  # Force resolving the package from $out to make generated ext files usable by tests
+  preCheck = ''
+    mv islpy islpy.hidden
+  '';
 
-  preCheck = "mv islpy islpy.hidden";
   nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "islpy" ];
 
-  meta = with lib; {
+  meta = {
     description = "Python wrapper around isl, an integer set library";
     homepage = "https://github.com/inducer/islpy";
-    license = licenses.mit;
-    maintainers = [ ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ tomasajt ];
   };
 }