1{ lib
2, stdenv
3, buildPythonPackage
4, fetchFromGitHub
5, blas
6, lapack
7, numpy
8, scipy
9 # check inputs
10, pytestCheckHook
11}:
12
13buildPythonPackage rec {
14 pname = "scs";
15 version = "3.2.3";
16
17 src = fetchFromGitHub {
18 owner = "bodono";
19 repo = "scs-python";
20 rev = version;
21 hash = "sha256-/5yGvZy3luGQkbYcsb/6TZLYou91lpA3UKONviMVpuM=";
22 fetchSubmodules = true;
23 };
24
25 buildInputs = [
26 lapack
27 blas
28 ];
29
30 propagatedBuildInputs = [
31 numpy
32 scipy
33 ];
34
35 nativeCheckInputs = [ pytestCheckHook ];
36 pythonImportsCheck = [ "scs" ];
37 disabledTests = lib.lists.optional (stdenv.system == "x86_64-linux") [
38 # `test/test_scs_rand.py` hang on "x86_64-linux" (https://github.com/NixOS/nixpkgs/pull/244532#pullrequestreview-1598095858)
39 "test_feasible"
40 "test_infeasibl"
41 "test_unbounded"
42 ];
43
44 meta = with lib; {
45 description = "Python interface for SCS: Splitting Conic Solver";
46 longDescription = ''
47 Solves convex cone programs via operator splitting.
48 Can solve: linear programs (LPs), second-order cone programs (SOCPs), semidefinite programs (SDPs),
49 exponential cone programs (ECPs), and power cone programs (PCPs), or problems with any combination of those cones.
50 '';
51 homepage = "https://github.com/cvxgrp/scs"; # upstream C package
52 downloadPage = "https://github.com/bodono/scs-python";
53 license = licenses.mit;
54 maintainers = with maintainers; [ drewrisinger ];
55 };
56}