pythonPackages.rpy2: various fixes (#51084)
- make sure libreadline is found at runtime - make sure python libraries are found at runtime - add libraries necessary to pass the testsuite and standard libraries
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
{ lib
|
||||
, python
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, isPyPy
|
||||
, isPy27
|
||||
, readline
|
||||
, R
|
||||
, rWrapper
|
||||
, rPackages
|
||||
, pcre
|
||||
, lzma
|
||||
, bzip2
|
||||
@@ -13,7 +16,11 @@
|
||||
, singledispatch
|
||||
, six
|
||||
, jinja2
|
||||
, pytz
|
||||
, numpy
|
||||
, pytest
|
||||
, mock
|
||||
, extraRPackages ? []
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
@@ -38,18 +45,54 @@ buildPythonPackage rec {
|
||||
bzip2
|
||||
zlib
|
||||
icu
|
||||
] ++ (with rPackages; [
|
||||
# packages expected by the test framework
|
||||
ggplot2
|
||||
dplyr
|
||||
RSQLite
|
||||
broom
|
||||
DBI
|
||||
dbplyr
|
||||
hexbin
|
||||
lme4
|
||||
tidyr
|
||||
]) ++ extraRPackages ++ rWrapper.recommendedPackages;
|
||||
|
||||
patches = [
|
||||
# R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
|
||||
# This patch sets R_LIBS_SITE when rpy2 is imported.
|
||||
./r-libs-site.patch
|
||||
];
|
||||
postPatch = ''
|
||||
substituteInPlace rpy/rinterface/__init__.py --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [
|
||||
singledispatch
|
||||
six
|
||||
jinja2
|
||||
pytz
|
||||
numpy
|
||||
];
|
||||
checkInputs = [ pytest ];
|
||||
# Tests fail with `assert not _relpath.startswith('..'), "Path must be within the project"`
|
||||
# in the unittest `loader.py`. I don't know what causes this.
|
||||
|
||||
checkInputs = [
|
||||
pytest
|
||||
mock
|
||||
];
|
||||
# One remaining test failure caused by different unicode encoding.
|
||||
# https://bitbucket.org/rpy2/rpy2/issues/488
|
||||
doCheck = false;
|
||||
# without this tests fail when looking for libreadline.so
|
||||
LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
|
||||
checkPhase = ''
|
||||
${python.interpreter} -m 'rpy2.tests'
|
||||
'';
|
||||
|
||||
# For some reason libreadline.so is not found. Curiously `ldd _rinterface.so | grep readline` shows two readline entries:
|
||||
# libreadline.so.6 => not found
|
||||
# libreadline.so.6 => /nix/store/z2zhmrg6jcrn5iq2779mav0nnq4vm2q6-readline-6.3p08/lib/libreadline.so.6 (0x00007f333ac43000)
|
||||
# There must be a better way to fix this, but I don't know it.
|
||||
postFixup = ''
|
||||
patchelf --add-needed ${readline}/lib/libreadline.so "$out/${python.sitePackages}/rpy2/rinterface/"_rinterface*.so
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://rpy.sourceforge.net/rpy2;
|
||||
|
||||
Reference in New Issue
Block a user