Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / cvxopt / default.nix
blob0ba23e15106049387784d62dceee4e43c42fa2ac
1 { stdenv
2 , lib
3 , buildPythonPackage
4 , fetchPypi
5 , isPyPy
6 , python
7 , blas
8 , lapack
9 , suitesparse
10 , unittestCheckHook
11 , glpk ? null
12 , gsl ? null
13 , fftw ? null
14 , withGlpk ? true
15 , withGsl ? true
16 , withFftw ? true
19 assert (!blas.isILP64) && (!lapack.isILP64);
21 buildPythonPackage rec {
22   pname = "cvxopt";
23   version = "1.3.2";
24   format = "setuptools";
26   disabled = isPyPy; # hangs at [translation:info]
28   src = fetchPypi {
29     inherit pname version;
30     hash = "sha256-NGH6QsGyJAuk2h2YXKc1A5FBV/xMd0FzJ+1tfYWs2+Y=";
31   };
33   buildInputs = [ blas lapack ];
35   # similar to Gsl, glpk, fftw there is also a dsdp interface
36   # but dsdp is not yet packaged in nixpkgs
37   env = {
38     CVXOPT_BLAS_LIB = "blas";
39     CVXOPT_LAPACK_LIB = "lapack";
40     CVXOPT_BUILD_DSDP = "0";
41     CVXOPT_SUITESPARSE_LIB_DIR = "${lib.getLib suitesparse}/lib";
42     CVXOPT_SUITESPARSE_INC_DIR = "${lib.getDev suitesparse}/include";
43   } // lib.optionalAttrs withGsl {
44     CVXOPT_BUILD_GSL = "1";
45     CVXOPT_GSL_LIB_DIR= "${lib.getLib gsl}/lib";
46     CVXOPT_GSL_INC_DIR= "${lib.getDev gsl}/include";
47   } // lib.optionalAttrs withGlpk {
48     CVXOPT_BUILD_GLPK = "1";
49     CVXOPT_GLPK_LIB_DIR = "${lib.getLib glpk}/lib";
50     CVXOPT_GLPK_INC_DIR = "${lib.getDev glpk}/include";
51   } // lib.optionalAttrs withFftw {
52     CVXOPT_BUILD_FFTW = "1";
53     CVXOPT_FFTW_LIB_DIR = "${lib.getLib fftw}/lib";
54     CVXOPT_FFTW_INC_DIR = "${lib.getDev fftw}/include";
55   };
57   nativeCheckInputs = [ unittestCheckHook ];
59   unittestFlagsArray = [ "-s" "tests" ];
61   meta = with lib; {
62     homepage = "https://cvxopt.org/";
63     description = "Python Software for Convex Optimization";
64     longDescription = ''
65       CVXOPT is a free software package for convex optimization based on the
66       Python programming language. It can be used with the interactive
67       Python interpreter, on the command line by executing Python scripts,
68       or integrated in other software via Python extension modules. Its main
69       purpose is to make the development of software for convex optimization
70       applications straightforward by building on Python's extensive
71       standard library and on the strengths of Python as a high-level
72       programming language.
73     '';
74     maintainers = with maintainers; [ edwtjo ];
75     license = licenses.gpl3Plus;
76   };