Merge pull request #74537 from timokau/rpy2-3.2.2
python3.pkgs.rpy2: 2.9.5 -> 3.2.2
This commit is contained in:
commit
28cb34d538
108
pkgs/development/python-modules/rpy2/2.nix
Normal file
108
pkgs/development/python-modules/rpy2/2.nix
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
{ lib
|
||||||
|
, python
|
||||||
|
, buildPythonPackage
|
||||||
|
, fetchPypi
|
||||||
|
, isPyPy
|
||||||
|
, isPy27
|
||||||
|
, readline
|
||||||
|
, R
|
||||||
|
, rWrapper
|
||||||
|
, rPackages
|
||||||
|
, pcre
|
||||||
|
, lzma
|
||||||
|
, bzip2
|
||||||
|
, zlib
|
||||||
|
, icu
|
||||||
|
, singledispatch
|
||||||
|
, six
|
||||||
|
, jinja2
|
||||||
|
, pytz
|
||||||
|
, numpy
|
||||||
|
, pytest
|
||||||
|
, mock
|
||||||
|
, extraRPackages ? []
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
version = "2.8.6"; # python2 support dropped in 2.9.x
|
||||||
|
pname = "rpy2";
|
||||||
|
disabled = isPyPy;
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit version pname;
|
||||||
|
sha256 = "162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80";
|
||||||
|
};
|
||||||
|
buildInputs = [
|
||||||
|
readline
|
||||||
|
R
|
||||||
|
pcre
|
||||||
|
lzma
|
||||||
|
bzip2
|
||||||
|
zlib
|
||||||
|
icu
|
||||||
|
] ++ (with rPackages; [
|
||||||
|
# packages expected by the test framework
|
||||||
|
ggplot2
|
||||||
|
dplyr
|
||||||
|
RSQLite
|
||||||
|
broom
|
||||||
|
DBI
|
||||||
|
dbplyr
|
||||||
|
hexbin
|
||||||
|
lme4
|
||||||
|
tidyr
|
||||||
|
|
||||||
|
# is in upstream's `requires` although it shouldn't be -- this is easier than patching it away
|
||||||
|
pytest
|
||||||
|
]) ++ extraRPackages ++ rWrapper.recommendedPackages;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
|
||||||
|
];
|
||||||
|
|
||||||
|
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 ${ if isPy27 then "rpy/rinterface/__init__.py" else "rpy2/rinterface_lib/embedded.py" } --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
|
||||||
|
'';
|
||||||
|
|
||||||
|
doPatchelf = false; # fails because of "missing filename"
|
||||||
|
patchelfPhase = "";
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
singledispatch
|
||||||
|
six
|
||||||
|
jinja2
|
||||||
|
pytz
|
||||||
|
numpy
|
||||||
|
];
|
||||||
|
|
||||||
|
checkInputs = [
|
||||||
|
pytest
|
||||||
|
mock
|
||||||
|
];
|
||||||
|
# One remaining test failure caused by different unicode encoding.
|
||||||
|
# https://bitbucket.org/rpy2/rpy2/issues/488
|
||||||
|
doCheck = false;
|
||||||
|
checkPhase = ''
|
||||||
|
${python.interpreter} -m 'rpy2'
|
||||||
|
'';
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
description = "Python interface to R";
|
||||||
|
license = lib.licenses.gpl2Plus;
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
maintainers = with lib.maintainers; [ joelmo ];
|
||||||
|
};
|
||||||
|
}
|
@ -3,8 +3,6 @@
|
|||||||
, buildPythonPackage
|
, buildPythonPackage
|
||||||
, fetchPypi
|
, fetchPypi
|
||||||
, isPyPy
|
, isPyPy
|
||||||
, isPy27
|
|
||||||
, readline
|
|
||||||
, R
|
, R
|
||||||
, rWrapper
|
, rWrapper
|
||||||
, rPackages
|
, rPackages
|
||||||
@ -13,38 +11,38 @@
|
|||||||
, bzip2
|
, bzip2
|
||||||
, zlib
|
, zlib
|
||||||
, icu
|
, icu
|
||||||
, singledispatch
|
, ipython
|
||||||
, six
|
|
||||||
, jinja2
|
, jinja2
|
||||||
, pytz
|
, pytz
|
||||||
|
, pandas
|
||||||
, numpy
|
, numpy
|
||||||
|
, cffi
|
||||||
|
, tzlocal
|
||||||
|
, simplegeneric
|
||||||
, pytest
|
, pytest
|
||||||
, mock
|
|
||||||
, extraRPackages ? []
|
, extraRPackages ? []
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
version = if isPy27 then
|
version = "3.2.2";
|
||||||
"2.8.6" # python2 support dropped in 2.9.x
|
|
||||||
else
|
|
||||||
"2.9.5";
|
|
||||||
pname = "rpy2";
|
pname = "rpy2";
|
||||||
|
|
||||||
disabled = isPyPy;
|
disabled = isPyPy;
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit version pname;
|
inherit version pname;
|
||||||
sha256 = if isPy27 then
|
sha256 = "0b3jpn9x7m2pccriyzgfsdb68qp6nq4ffhvjy1q2ar8wdxvmf5xp";
|
||||||
"162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80" # 2.8.x
|
|
||||||
else
|
|
||||||
"1nrj8pgyxrwrfdrxzb4j3z1adjwjx1mr8d1n5cmrz4nhlzy8w7xr"; # 2.9.x
|
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
readline
|
|
||||||
R
|
R
|
||||||
pcre
|
pcre
|
||||||
lzma
|
lzma
|
||||||
bzip2
|
bzip2
|
||||||
zlib
|
zlib
|
||||||
icu
|
icu
|
||||||
|
|
||||||
|
# is in the upstream `requires` although it shouldn't be -- this is easier than patching it away
|
||||||
|
pytest
|
||||||
] ++ (with rPackages; [
|
] ++ (with rPackages; [
|
||||||
# packages expected by the test framework
|
# packages expected by the test framework
|
||||||
ggplot2
|
ggplot2
|
||||||
@ -58,6 +56,10 @@ buildPythonPackage rec {
|
|||||||
tidyr
|
tidyr
|
||||||
]) ++ extraRPackages ++ rWrapper.recommendedPackages;
|
]) ++ extraRPackages ++ rWrapper.recommendedPackages;
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
pytest
|
||||||
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
|
R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
|
||||||
];
|
];
|
||||||
@ -65,38 +67,26 @@ buildPythonPackage rec {
|
|||||||
patches = [
|
patches = [
|
||||||
# R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
|
# 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.
|
# This patch sets R_LIBS_SITE when rpy2 is imported.
|
||||||
./r-libs-site.patch
|
./rpy2-3.x-r-libs-site.patch
|
||||||
];
|
];
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
substituteInPlace rpy/rinterface/__init__.py --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
|
substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs = [
|
||||||
singledispatch
|
ipython
|
||||||
six
|
|
||||||
jinja2
|
jinja2
|
||||||
pytz
|
pytz
|
||||||
|
pandas
|
||||||
numpy
|
numpy
|
||||||
|
cffi
|
||||||
|
tzlocal
|
||||||
|
simplegeneric
|
||||||
];
|
];
|
||||||
|
|
||||||
checkInputs = [
|
checkInputs = [
|
||||||
pytest
|
pytest
|
||||||
mock
|
|
||||||
];
|
];
|
||||||
# One remaining test failure caused by different unicode encoding.
|
|
||||||
# https://bitbucket.org/rpy2/rpy2/issues/488
|
|
||||||
doCheck = false;
|
|
||||||
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 = {
|
meta = {
|
||||||
homepage = http://rpy.sourceforge.net/rpy2;
|
homepage = http://rpy.sourceforge.net/rpy2;
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
diff --git a/rpy2/rinterface_lib/embedded.py b/rpy2/rinterface_lib/embedded.py
|
||||||
|
index cc32b6d..3969ad0 100644
|
||||||
|
--- a/rpy2/rinterface_lib/embedded.py
|
||||||
|
+++ b/rpy2/rinterface_lib/embedded.py
|
||||||
|
@@ -113,6 +113,16 @@ def _initr(interactive: bool = True,
|
||||||
|
if isinitialized():
|
||||||
|
return None
|
||||||
|
os.environ['R_HOME'] = openrlib.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
|
||||||
|
+
|
||||||
|
options_c = [ffi.new('char[]', o.encode('ASCII')) for o in _options]
|
||||||
|
n_options = len(options_c)
|
||||||
|
n_options_c = ffi.cast('int', n_options)
|
@ -5042,7 +5042,9 @@ in {
|
|||||||
|
|
||||||
rpmfluff = callPackage ../development/python-modules/rpmfluff {};
|
rpmfluff = callPackage ../development/python-modules/rpmfluff {};
|
||||||
|
|
||||||
rpy2 = callPackage ../development/python-modules/rpy2 {};
|
rpy2 = if isPy3k
|
||||||
|
then callPackage ../development/python-modules/rpy2 { }
|
||||||
|
else callPackage ../development/python-modules/rpy2/2.nix { };
|
||||||
|
|
||||||
rtslib = callPackage ../development/python-modules/rtslib {};
|
rtslib = callPackage ../development/python-modules/rtslib {};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user