user/py3-rpy2: new aport

This commit is contained in:
Antoine Martin 2023-04-26 00:00:51 -04:00 committed by Antoine Martin
parent a9536da00e
commit cf8ea20507
2 changed files with 89 additions and 0 deletions

34
user/py3-rpy2/APKBUILD Normal file
View file

@ -0,0 +1,34 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=py3-rpy2
_pyname="rpy2"
pkgver=3.5.11
pkgrel=0
arch="all"
pkgdesc="A very simple, yet robust, Python interface to the R Programming Language"
url="https://pypi.python.org/project/$_pyname"
license="GPL-2.0"
depends='python3-dev py3-cffi py3-numpy py3-tz py3-tzlocal py3-jinja2 R'
makedepends='py3-build py3-installer py3-setuptools py3-wheel'
checkdepends='py3-pytest'
options="!check" # test failure
source="$pkgname-$pkgver.tar.gz::https://pypi.io/packages/source/${_pyname:0:1}/$_pyname/$_pyname-$pkgver.tar.gz"
builddir="$srcdir"/$_pyname-$pkgver
build() {
python3 -m build --wheel --no-isolation
}
check() {
PYTHONPATH="$PWD"/$(echo build/lib.*) \
pytest -v -k 'not test_rendertofile and not test_rendertobytes_plot' # Skip test that segfaults in build server
}
package() {
python3 -m installer --destdir="$pkgdir" dist/*.whl
}
sha512sums="
c0becf26f19c9f9e34033bde12bc34f1322cbc7ca215e1081b27689a62d6c9a012ab4478e4c867e510d519bc475c2b27ee93f43a0b513dd3f2c0bea2389b9862 py3-rpy2-3.5.11.tar.gz
"

View file

@ -0,0 +1,55 @@
From c8a0c67b1c4da9054e542714a43fef12ecbc4222 Mon Sep 17 00:00:00 2001
From: Laurent Gautier <lgautier@gmail.com>
Date: Sun, 5 Dec 2021 21:31:23 -0500
Subject: [PATCH] Set LD_LIBRARY_PATH before initializing R.
(issue #833).
---
NEWS | 3 +++
rpy2/rinterface_lib/embedded.py | 6 ++++++
rpy2/rinterface_lib/openrlib.py | 1 +
3 files changed, 10 insertions(+)
diff --git a/NEWS b/NEWS
index cf15215c..aac6ae2c 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,9 @@ Changes
- :obj:`rpy2.rinterface.NULL` can be refererenced in code before the embedded
R is initialized.
+- `LD_LIBRARY_PATH` is obtained from the executable `RScript` and set prior
+ to initializing R at the rinterface level (issue #833).
+
Bugs fixed
----------
diff --git a/rpy2/rinterface_lib/embedded.py b/rpy2/rinterface_lib/embedded.py
index 8d2ad651..978630ec 100644
--- a/rpy2/rinterface_lib/embedded.py
+++ b/rpy2/rinterface_lib/embedded.py
@@ -255,6 +255,12 @@ def _initr(
_setinitialized()
return None
os.environ['R_HOME'] = openrlib.R_HOME
+ os.environ['LD_LIBRARY_PATH'] = (
+ ':'.join(
+ (openrlib.LD_LIBRARY_PATH,
+ os.environ.get('LD_LIBRARY_PATH', ''))
+ )
+ )
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)
diff --git a/rpy2/rinterface_lib/openrlib.py b/rpy2/rinterface_lib/openrlib.py
index 9254fa73..2e183481 100644
--- a/rpy2/rinterface_lib/openrlib.py
+++ b/rpy2/rinterface_lib/openrlib.py
@@ -20,6 +20,7 @@
# TODO: Separate the functions in the module from the side-effect of
# finding R_HOME and opening the shared library.
R_HOME = rpy2.situation.get_r_home()
+LD_LIBRARY_PATH = rpy2.situation.r_ld_library_path_from_subprocess(R_HOME)
rlock = threading.RLock()