Merge pull request #270016 from a-n-n-a-l-e-e/cvxopt-LP64-darwin

python311Packages.cvxopt: use LP64 blas on darwin; fix build
This commit is contained in:
Emily Trau 2023-12-01 18:49:25 +11:00 committed by GitHub
commit c27bf65a6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,9 +4,8 @@
, fetchPypi , fetchPypi
, isPyPy , isPyPy
, python , python
, openblas
, blas , blas
, lapack # build segfaults with 64-bit blas , lapack
, suitesparse , suitesparse
, unittestCheckHook , unittestCheckHook
, glpk ? null , glpk ? null
@ -30,38 +29,29 @@ buildPythonPackage rec {
hash = "sha256-NGH6QsGyJAuk2h2YXKc1A5FBV/xMd0FzJ+1tfYWs2+Y="; hash = "sha256-NGH6QsGyJAuk2h2YXKc1A5FBV/xMd0FzJ+1tfYWs2+Y=";
}; };
buildInputs = (if stdenv.isDarwin then [ openblas ] else [ blas lapack ]); buildInputs = [ blas lapack ];
doCheck = !stdenv.isDarwin;
# similar to Gsl, glpk, fftw there is also a dsdp interface # similar to Gsl, glpk, fftw there is also a dsdp interface
# but dsdp is not yet packaged in nixpkgs # but dsdp is not yet packaged in nixpkgs
preConfigure = (if stdenv.isDarwin then env = {
'' CVXOPT_BLAS_LIB = "blas";
export CVXOPT_BLAS_LIB=openblas CVXOPT_LAPACK_LIB = "lapack";
export CVXOPT_LAPACK_LIB=openblas CVXOPT_BUILD_DSDP = "0";
'' CVXOPT_SUITESPARSE_LIB_DIR = "${lib.getLib suitesparse}/lib";
else CVXOPT_SUITESPARSE_INC_DIR = "${lib.getDev suitesparse}/include";
'' } // lib.optionalAttrs withGsl {
export CVXOPT_BLAS_LIB=blas CVXOPT_BUILD_GSL = "1";
export CVXOPT_LAPACK_LIB=lapack CVXOPT_GSL_LIB_DIR= "${lib.getLib gsl}/lib";
'') + CVXOPT_GSL_INC_DIR= "${lib.getDev gsl}/include";
'' } // lib.optionalAttrs withGlpk {
export CVXOPT_BUILD_DSDP=0 CVXOPT_BUILD_GLPK = "1";
export CVXOPT_SUITESPARSE_LIB_DIR=${lib.getLib suitesparse}/lib CVXOPT_GLPK_LIB_DIR = "${lib.getLib glpk}/lib";
export CVXOPT_SUITESPARSE_INC_DIR=${lib.getDev suitesparse}/include CVXOPT_GLPK_INC_DIR = "${lib.getDev glpk}/include";
'' + lib.optionalString withGsl '' } // lib.optionalAttrs withFftw {
export CVXOPT_BUILD_GSL=1 CVXOPT_BUILD_FFTW = "1";
export CVXOPT_GSL_LIB_DIR=${lib.getLib gsl}/lib CVXOPT_FFTW_LIB_DIR = "${lib.getLib fftw}/lib";
export CVXOPT_GSL_INC_DIR=${lib.getDev gsl}/include CVXOPT_FFTW_INC_DIR = "${lib.getDev fftw}/include";
'' + lib.optionalString withGlpk '' };
export CVXOPT_BUILD_GLPK=1
export CVXOPT_GLPK_LIB_DIR=${lib.getLib glpk}/lib
export CVXOPT_GLPK_INC_DIR=${lib.getDev glpk}/include
'' + lib.optionalString withFftw ''
export CVXOPT_BUILD_FFTW=1
export CVXOPT_FFTW_LIB_DIR=${lib.getLib fftw}/lib
export CVXOPT_FFTW_INC_DIR=${lib.getDev fftw}/include
'';
nativeCheckInputs = [ unittestCheckHook ]; nativeCheckInputs = [ unittestCheckHook ];