Merge pull request #64711 from risicle/ris-lightgbm-darwin-fix

pythonPackages.lightgbm: fix build on darwin
This commit is contained in:
worldofpeace 2019-07-23 02:47:13 -04:00 committed by GitHub
commit fcc682382a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,10 +1,11 @@
{ lib { stdenv
, buildPythonPackage , buildPythonPackage
, fetchPypi , fetchPypi
, cmake , cmake
, numpy , numpy
, scipy , scipy
, scikitlearn , scikitlearn
, llvmPackages ? null
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -20,6 +21,19 @@ buildPythonPackage rec {
cmake cmake
]; ];
# we never actually explicitly call the install command so this is the only way
# to inject these options to it - however, openmp-library doesn't appear to have
# any effect, so we have to inject it into NIX_LDFLAGS manually below
postPatch = stdenv.lib.optionalString stdenv.cc.isClang ''
cat >> setup.cfg <<EOF
[install]
openmp-include-dir=${llvmPackages.openmp}/include
openmp-library=${llvmPackages.openmp}/lib/libomp.dylib
EOF
'';
propagatedBuildInputs = [ propagatedBuildInputs = [
numpy numpy
scipy scipy
@ -28,6 +42,8 @@ buildPythonPackage rec {
postConfigure = '' postConfigure = ''
export HOME=$(mktemp -d) export HOME=$(mktemp -d)
'' + stdenv.lib.optionalString stdenv.cc.isClang ''
export NIX_LDFLAGS="$NIX_LDFLAGS -L${llvmPackages.openmp}/lib -lomp"
''; '';
# The pypi package doesn't distribute the tests from the GitHub # The pypi package doesn't distribute the tests from the GitHub
@ -35,10 +51,10 @@ buildPythonPackage rec {
# `make check`. # `make check`.
doCheck = false; doCheck = false;
meta = with lib; { meta = with stdenv.lib; {
description = "A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework"; description = "A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework";
homepage = https://github.com/Microsoft/LightGBM; homepage = https://github.com/Microsoft/LightGBM;
license = licenses.mit; license = licenses.mit;
maintainers = with lib.maintainers; [ teh costrouc ]; maintainers = with maintainers; [ teh costrouc ];
}; };
} }