aboutsummaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/rpy2/default.nix
diff options
context:
space:
mode:
authorTimo Kaufmann <timokau@zoho.com>2018-11-27 18:24:37 +0100
committerGitHub <noreply@github.com>2018-11-27 18:24:37 +0100
commit63b39af496505034fd5125f9a94dccd795d1b648 (patch)
tree44d32bbf025f24439426dc2828a0efaa5de19b43 /pkgs/development/python-modules/rpy2/default.nix
parentbe8569be499490fc04eff48c2d27dd9d89aaa60d (diff)
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
Diffstat (limited to '')
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix53
1 files changed, 48 insertions, 5 deletions
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index 61447e740265..cefd155353ac 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -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;