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:
parent
be8569be49
commit
63b39af496
@ -1,10 +1,13 @@
|
|||||||
{ lib
|
{ lib
|
||||||
|
, python
|
||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, isPyPy
|
, isPyPy
|
||||||
, isPy27
|
, isPy27
|
||||||
, readline
|
, readline
|
||||||
, R
|
, R
|
||||||
|
, rWrapper
|
||||||
|
, rPackages
|
||||||
, pcre
|
, pcre
|
||||||
, lzma
|
, lzma
|
||||||
, bzip2
|
, bzip2
|
||||||
@ -13,7 +16,11 @@
|
|||||||
, singledispatch
|
, singledispatch
|
||||||
, six
|
, six
|
||||||
, jinja2
|
, jinja2
|
||||||
|
, pytz
|
||||||
|
, numpy
|
||||||
, pytest
|
, pytest
|
||||||
|
, mock
|
||||||
|
, extraRPackages ? []
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
@ -38,18 +45,54 @@ buildPythonPackage rec {
|
|||||||
bzip2
|
bzip2
|
||||||
zlib
|
zlib
|
||||||
icu
|
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 = [
|
propagatedBuildInputs = [
|
||||||
singledispatch
|
singledispatch
|
||||||
six
|
six
|
||||||
jinja2
|
jinja2
|
||||||
|
pytz
|
||||||
|
numpy
|
||||||
];
|
];
|
||||||
checkInputs = [ pytest ];
|
|
||||||
# Tests fail with `assert not _relpath.startswith('..'), "Path must be within the project"`
|
checkInputs = [
|
||||||
# in the unittest `loader.py`. I don't know what causes this.
|
pytest
|
||||||
|
mock
|
||||||
|
];
|
||||||
|
# One remaining test failure caused by different unicode encoding.
|
||||||
|
# https://bitbucket.org/rpy2/rpy2/issues/488
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
# without this tests fail when looking for libreadline.so
|
checkPhase = ''
|
||||||
LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
|
${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 = {
|
meta = {
|
||||||
homepage = http://rpy.sourceforge.net/rpy2;
|
homepage = http://rpy.sourceforge.net/rpy2;
|
||||||
|
20
pkgs/development/python-modules/rpy2/r-libs-site.patch
Normal file
20
pkgs/development/python-modules/rpy2/r-libs-site.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
diff --git a/rpy/rinterface/__init__.py b/rpy/rinterface/__init__.py
|
||||||
|
index 9362e57..1af258e 100644
|
||||||
|
--- a/rpy/rinterface/__init__.py
|
||||||
|
+++ b/rpy/rinterface/__init__.py
|
||||||
|
@@ -43,6 +43,15 @@ if not R_HOME:
|
||||||
|
if not os.environ.get("R_HOME"):
|
||||||
|
os.environ['R_HOME'] = R_HOME
|
||||||
|
|
||||||
|
+# path to libraries
|
||||||
|
+existing = os.environ.get('R_LIBS_SITE')
|
||||||
|
+if existing is not None:
|
||||||
|
+ prefix = existing + ':'
|
||||||
|
+else:
|
||||||
|
+ prefix = ''
|
||||||
|
+additional = '@NIX_R_LIBS_SITE@'
|
||||||
|
+os.environ['R_LIBS_SITE'] = prefix + additional
|
||||||
|
+
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
_load_r_dll(R_HOME)
|
||||||
|
|
@ -5,6 +5,9 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
buildInputs = [makeWrapper R] ++ recommendedPackages ++ packages;
|
buildInputs = [makeWrapper R] ++ recommendedPackages ++ packages;
|
||||||
|
|
||||||
|
# Make the list of recommended R packages accessible to other packages such as rpy2
|
||||||
|
passthru.recommendedPackages = recommendedPackages;
|
||||||
|
|
||||||
unpackPhase = ":";
|
unpackPhase = ":";
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user