diff --git a/com.oracle.truffle.r.pkgs/rJava/NAMESPACE b/com.oracle.truffle.r.pkgs/rJava/NAMESPACE index 1e1eb30c84f13ea28d8ff269af6bff007c690969..3309c37d9811366c58263450eb3ca1dbb18d2d5e 100644 --- a/com.oracle.truffle.r.pkgs/rJava/NAMESPACE +++ b/com.oracle.truffle.r.pkgs/rJava/NAMESPACE @@ -1,6 +1,7 @@ # Generated by roxygen2: do not edit by hand export(.jaddClassPath) +export(.jaddLibrary) export(.jarray) export(.jbyte) export(.jcall) diff --git a/com.oracle.truffle.r.pkgs/rJava/R/rj.R b/com.oracle.truffle.r.pkgs/rJava/R/rj.R index eda1f99daa71f3d20aad2b01cd0f881866060167..bef0b2281f1b0ef5101509cda934d8e2917e6452 100644 --- a/com.oracle.truffle.r.pkgs/rJava/R/rj.R +++ b/com.oracle.truffle.r.pkgs/rJava/R/rj.R @@ -104,6 +104,51 @@ J <- function (class, method, ...) } } +#' @export +.jpackage <- function (name, jars='*', morePaths='', nativeLibrary=FALSE, lib.loc=NULL) +{ + classes <- system.file("java", package = name, lib.loc = lib.loc) + if (nchar(classes)) { + .jaddClassPath(classes) + if (length(jars)) { + if (length(jars) == 1 && jars == "*") { + jars <- grep(".*\\.jar", list.files(classes, + full.names = TRUE), TRUE, value = TRUE) + if (length(jars)) + .jaddClassPath(jars) + } + else .jaddClassPath(paste(classes, jars, sep = .Platform$file.sep)) + } + } + if (any(nchar(morePaths))) { + cl <- as.character(morePaths) + cl <- cl[nchar(cl) > 0] + .jaddClassPath(cl) + } + if (is.logical(nativeLibrary)) { + if (nativeLibrary) { + libs <- "libs" + if (nchar(.Platform$r_arch)) + lib <- file.path("libs", .Platform$r_arch) + lib <- system.file(libs, paste(name, .Platform$dynlib.ext, + sep = ""), package = name, lib.loc = lib.loc) + if (nchar(lib)) + .jaddLibrary(name, lib) + else warning("Native library for `", name, "' could not be found.") + } + } + else { + .jaddLibrary(name, nativeLibrary) + } + invisible(TRUE) +} + +#' @export +.jaddClassPath <- function (path) +{ + java.addToClasspath(path) +} + # # noop stubs # @@ -132,29 +177,13 @@ J <- function (class, method, ...) } #' @export -.jpackage <- function (name, jars='*', morePaths='', nativeLibrary=FALSE, lib.loc=NULL) -{ - javalibs <- system.file("java", package = name, lib.loc = lib.loc) - if(javalibs == "") { - javalibs = paste0("library/", name, "/java") - } - cat(paste0("********************************************************\n", - "*** WARNING!!!\n", - "*** .jpackage is not yet implemented.\n", - "*** Please ensure that all java libraries from:\n", - "*** ", javalibs, "\n", - "*** are on FastR classpath\n", - "********************************************************\n")) -} - -#' @export -.jaddClassPath <- function (path) +.jaddLibrary <- function (name, path) { cat(paste0("********************************************************\n", - "*** WARNING!!!\n", - "*** .jaddClasPath is not yet implemented.\n", - "*** Please ensure that \n", - "*** ", path, "\n", - "*** is on FastR classpath\n", - "********************************************************\n")) + "*** WARNING!!!\n", + "*** .jaddLibrary is not yet implemented.\n", + "*** Please ensure that all native libraries from:\n", + "*** ", path, "\n", + "*** are set on LD_LIBRARY_PATH or java.library.path\n", + "********************************************************\n")) } \ No newline at end of file