python313Packages.rpy2-rinterface: init at 3.6.3

Changed files
+122
pkgs
development
top-level
+79
pkgs/development/python-modules/rpy2-rinterface/default.nix
···
···
+
{
+
stdenv,
+
lib,
+
buildPythonPackage,
+
fetchurl,
+
isPyPy,
+
R,
+
rWrapper,
+
xz,
+
bzip2,
+
zlib,
+
zstd,
+
icu,
+
pytestCheckHook,
+
setuptools,
+
cffi,
+
}:
+
+
buildPythonPackage rec {
+
version = "3.6.3";
+
format = "pyproject";
+
pname = "rpy2-rinterface";
+
+
disabled = isPyPy;
+
src = fetchurl {
+
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${
+
builtins.replaceStrings [ "-" ] [ "_" ] pname
+
}-${version}.tar.gz";
+
hash = "sha256-R3vC9R0AetG4VnxdS6GvD1mVFobufxBXagbQg03ld28=";
+
};
+
+
patches = [
+
# https://github.com/rpy2/rpy2/pull/1171#issuecomment-3263994962
+
./restore-initr-simple.patch
+
+
# 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.
+
./rpy2-3.x-r-libs-site.patch
+
];
+
+
postPatch = ''
+
substituteInPlace 'src/rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
+
'';
+
+
buildInputs = [
+
xz
+
bzip2
+
zlib
+
zstd
+
icu
+
]
+
++ rWrapper.recommendedPackages;
+
+
nativeBuildInputs = [
+
R # needed at setup time to detect R_HOME (alternatively set R_HOME explicitly)
+
];
+
+
propagatedBuildInputs = [
+
cffi
+
setuptools
+
];
+
+
nativeCheckInputs = [ pytestCheckHook ];
+
+
# https://github.com/rpy2/rpy2/issues/1111
+
disabledTests = [
+
"test_parse_incomplete_error"
+
"test_parse_error"
+
"test_parse_error_when_evaluting"
+
];
+
+
meta = {
+
homepage = "https://rpy2.github.io/";
+
description = "Python interface to R";
+
license = lib.licenses.gpl2Plus;
+
platforms = lib.platforms.unix;
+
maintainers = with lib; [ teams.sage ];
+
};
+
}
+20
pkgs/development/python-modules/rpy2-rinterface/restore-initr-simple.patch
···
···
+
diff --git a/src/rpy2/rinterface/__init__.py b/src/rpy2/rinterface/__init__.py
+
index 0ba46083..1f4265aa 100644
+
--- a/src/rpy2/rinterface/__init__.py
+
+++ b/src/rpy2/rinterface/__init__.py
+
@@ -1100,6 +1100,15 @@ NA = None
+
NA_Real = None
+
NA_Complex = None
+
+
+def initr_simple() -> typing.Optional[int]:
+
+ """Initialize R's embedded C library."""
+
+ with openrlib.rlock:
+
+ status = embedded._initr()
+
+ atexit.register(endr, 0)
+
+ _rinterface._register_external_symbols()
+
+ _post_initr_setup()
+
+ return status
+
+
+
+
def initr(
+
interactive: typing.Optional[bool] = None,
+19
pkgs/development/python-modules/rpy2-rinterface/rpy2-3.x-r-libs-site.patch
···
···
+
diff --git a/src/rpy2/rinterface_lib/embedded.py b/src/rpy2/rinterface_lib/embedded.py
+
index cc9f7da1..10626f13 100644
+
--- a/src/rpy2/rinterface_lib/embedded.py b/src/rpy2/rinterface_lib/embedded.py
+
@@ -328,6 +328,15 @@ def _initr(
+
_setinitialized()
+
return None
+
+
+ # 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
+
+
+
# TODO: Setting LD_LIBRARY_PATH after the process has started
+
# is too late. Because of this, the line below does not help
+
# address issues where calling R from the command line is working
+4
pkgs/top-level/python-packages.nix
···
rpy2 = callPackage ../development/python-modules/rpy2 { inherit (pkgs) zstd; };
rpyc = callPackage ../development/python-modules/rpyc { };
rq = callPackage ../development/python-modules/rq { };
···
rpy2 = callPackage ../development/python-modules/rpy2 { inherit (pkgs) zstd; };
+
rpy2-rinterface = callPackage ../development/python-modules/rpy2-rinterface {
+
inherit (pkgs) zstd;
+
};
+
rpyc = callPackage ../development/python-modules/rpyc { };
rq = callPackage ../development/python-modules/rq { };