aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules/rpy2
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2020-01-12 01:00:12 +0000
committerKatharina Fey <kookie@spacekookie.de>2020-01-12 01:00:12 +0000
commiteeaf5d25d5f6ae7ae1f5bf8a3dee4559693f8147 (patch)
treeafc41ca8dde96b41089ca324533084aef570322f /nixpkgs/pkgs/development/python-modules/rpy2
parent63c4c4dda49dc69e5812faa7ef8406180998f3ae (diff)
parente4134747f5666bcab8680aff67fa3b63384f9a0f (diff)
Merge commit 'e4134747f5666bcab8680aff67fa3b63384f9a0f'
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/rpy2')
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/2.nix108
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/default.nix56
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch21
3 files changed, 152 insertions, 33 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/2.nix b/nixpkgs/pkgs/development/python-modules/rpy2/2.nix
new file mode 100644
index 00000000000..aef184d4afc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/2.nix
@@ -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 ];
+ };
+ }
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
index 1b4ab4d40db..5a00b18557a 100644
--- a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
@@ -3,8 +3,6 @@
, buildPythonPackage
, fetchPypi
, isPyPy
-, isPy27
-, readline
, R
, rWrapper
, rPackages
@@ -13,38 +11,38 @@
, bzip2
, zlib
, icu
-, singledispatch
-, six
+, ipython
, jinja2
, pytz
+, pandas
, numpy
+, cffi
+, tzlocal
+, simplegeneric
, pytest
-, mock
, extraRPackages ? []
}:
buildPythonPackage rec {
- version = if isPy27 then
- "2.8.6" # python2 support dropped in 2.9.x
- else
- "2.9.5";
+ version = "3.2.4";
pname = "rpy2";
+
disabled = isPyPy;
src = fetchPypi {
inherit version pname;
- sha256 = if isPy27 then
- "162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80" # 2.8.x
- else
- "1nrj8pgyxrwrfdrxzb4j3z1adjwjx1mr8d1n5cmrz4nhlzy8w7xr"; # 2.9.x
+ sha256 = "3daf1a4b28c4e354ef989093f03b066908bf6e5082a6f4af72cc3fd928a28dc6";
};
+
buildInputs = [
- readline
R
pcre
lzma
bzip2
zlib
icu
+
+ # is in the upstream `requires` although it shouldn't be -- this is easier than patching it away
+ pytest
] ++ (with rPackages; [
# packages expected by the test framework
ggplot2
@@ -58,6 +56,10 @@ buildPythonPackage rec {
tidyr
]) ++ extraRPackages ++ rWrapper.recommendedPackages;
+ checkPhase = ''
+ pytest
+ '';
+
nativeBuildInputs = [
R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
];
@@ -65,38 +67,26 @@ buildPythonPackage rec {
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
+ ./rpy2-3.x-r-libs-site.patch
];
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 = [
- singledispatch
- six
+ ipython
jinja2
pytz
+ pandas
numpy
+ cffi
+ tzlocal
+ simplegeneric
];
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.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;
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch b/nixpkgs/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch
new file mode 100644
index 00000000000..177e4f9a83d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch
@@ -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)