aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/python-modules/rpy2
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-05 12:43:18 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-05 12:44:52 +0000
commitcf85056ba64caf3267d43255ef4a1243e9c8ee3b (patch)
tree3051519e9c8275b870aac43f80af875715c9d124 /nixpkgs/pkgs/development/python-modules/rpy2
parent1148b1d122bc03e9a3665856c9b7bb96bd4e3994 (diff)
parent2436c27541b2f52deea3a4c1691216a02152e729 (diff)
Add 'nixpkgs/' from commit '2436c27541b2f52deea3a4c1691216a02152e729'
git-subtree-dir: nixpkgs git-subtree-mainline: 1148b1d122bc03e9a3665856c9b7bb96bd4e3994 git-subtree-split: 2436c27541b2f52deea3a4c1691216a02152e729
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/rpy2')
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/default.nix108
-rw-r--r--nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch20
2 files changed, 128 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/rpy2/default.nix b/nixpkgs/pkgs/development/python-modules/rpy2/default.nix
new file mode 100644
index 00000000000..1b4ab4d40db
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/default.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 = if isPy27 then
+ "2.8.6" # python2 support dropped in 2.9.x
+ else
+ "2.9.5";
+ pname = "rpy2";
+ disabled = isPyPy;
+ src = fetchPypi {
+ inherit version pname;
+ sha256 = if isPy27 then
+ "162zki5c1apgv6qbafi7n66y4hgpgp43xag7q75qb6kv99ri6k80" # 2.8.x
+ else
+ "1nrj8pgyxrwrfdrxzb4j3z1adjwjx1mr8d1n5cmrz4nhlzy8w7xr"; # 2.9.x
+ };
+ 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
+ ]) ++ 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 rpy/rinterface/__init__.py --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
+ '';
+
+ 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.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;
+ 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/r-libs-site.patch b/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
new file mode 100644
index 00000000000..a55b6038bb4
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rpy2/r-libs-site.patch
@@ -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)
+