Commit 50b368e4 authored by Mauricio Collares's avatar Mauricio Collares
Browse files

python313Packages.rpy2-rinterface: init at 3.6.3

parent fde282a3
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
{
  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 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
@@ -16113,6 +16113,10 @@ self: super: with self; {
  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 { };