nixpkgs/pkgs/development/python-modules/pandas/default.nix
Josef Kemetmueller eb2994a0d5 pandas: Fix build on darwin
Since the commands "locale", "pbpaste" and "pbcopy" are not in nixpkgs,
as they are impure darwin dependencies, we currently cannot get the
clipboard and locale functionality to work properly. We disable the
tests "test_locale" and "test_clipboard" on darwin, so we get a mostly
working pandas. Additionally to disabling the test via py.test, we also
need to provide fake pbpaste/pbcopy commands, so py.test won't fail
during the collection phase.

This closes #25417 and closes #11623.
2017-05-30 02:18:40 +02:00

95 lines
2.2 KiB
Nix

{ buildPythonPackage
, fetchPypi
, python
, stdenv
, fetchurl
, pytest
, glibcLocales
, cython
, dateutil
, scipy
, numexpr
, pytz
, xlrd
, bottleneck
, sqlalchemy
, lxml
, html5lib
, beautifulsoup4
, openpyxl
, tables
, xlwt
, libcxx ? null
}:
let
inherit (stdenv.lib) optional optionalString concatStringsSep;
inherit (stdenv) isDarwin;
in buildPythonPackage rec {
pname = "pandas";
version = "0.20.1";
name = "${pname}-${version}";
src = fetchPypi {
inherit pname version;
sha256 = "42707365577ef69f7c9c168ddcf045df2957595a9ee71bc13c7997eecb96b190";
};
LC_ALL = "en_US.UTF-8";
buildInputs = [ pytest glibcLocales ] ++ optional isDarwin libcxx;
propagatedBuildInputs = [
cython
dateutil
scipy
numexpr
pytz
xlrd
bottleneck
sqlalchemy
lxml
html5lib
beautifulsoup4
openpyxl
tables
xlwt
];
# For OSX, we need to add a dependency on libcxx, which provides
# `complex.h` and other libraries that pandas depends on to build.
postPatch = optionalString isDarwin ''
cpp_sdk="${libcxx}/include/c++/v1";
echo "Adding $cpp_sdk to the setup.py common_include variable"
substituteInPlace setup.py \
--replace "['pandas/src/klib', 'pandas/src']" \
"['pandas/src/klib', 'pandas/src', '$cpp_sdk']"
'';
checkPhase = ''
runHook preCheck
''
# TODO: Get locale and clipboard support working on darwin.
# Until then we disable the tests.
+ optionalString isDarwin ''
# Fake the impure dependencies pbpaste and pbcopy
echo "#!/bin/sh" > pbcopy
echo "#!/bin/sh" > pbpaste
chmod a+x pbcopy pbpaste
export PATH=$(pwd):$PATH
'' + ''
py.test $out/${python.sitePackages}/pandas --skip-slow --skip-network \
${if isDarwin then "-k 'not test_locale and not test_clipboard'" else ""}
runHook postCheck
'';
meta = {
# https://github.com/pandas-dev/pandas/issues/14866
# pandas devs are no longer testing i686 so safer to assume it's broken
broken = stdenv.isi686;
homepage = "http://pandas.pydata.org/";
description = "Python Data Analysis Library";
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ raskin fridh knedlsepp ];
platforms = stdenv.lib.platforms.unix;
};
}