From 45464d22c1d7baca728d2d45f4799366023da753 Mon Sep 17 00:00:00 2001
From: stepan <stepan.sindelar@oracle.com>
Date: Fri, 6 Apr 2018 21:40:06 +0200
Subject: [PATCH] Make sure rJava installation is as user-friendly as possible

---
 ci.hocon                                      |  2 +-
 .../oracle/truffle/r/library/utils/R/utils.R  |  5 ++-
 com.oracle.truffle.r.native/run/Makefile      |  1 +
 .../run/edMakeconf.etc                        |  1 +
 com.oracle.truffle.r.pkgs/rJava/src/Makevars  |  4 +-
 .../rJava/src/java/Makefile                   | 45 -------------------
 6 files changed, 9 insertions(+), 49 deletions(-)
 delete mode 100644 com.oracle.truffle.r.pkgs/rJava/src/java/Makefile

diff --git a/ci.hocon b/ci.hocon
index 05958d74c4..e83063bb4e 100644
--- a/ci.hocon
+++ b/ci.hocon
@@ -39,7 +39,7 @@ logfiles : [
     "com.oracle.truffle.r.native/gnur/tests/log/all.diff"
     "com.oracle.truffle.r.test.native/embedded/*.output"
     "com.oracle.truffle.r.test.native/embedded/src/*.output"
-    "*-tests/*.Rout"
+    "*-tests/**/*.Rout"
   ]
 
 # This is needed by all (Linux) builds but is specific to the module system employed
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/R/utils.R b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/R/utils.R
index d911e336fa..55d9ba102b 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/R/utils.R
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/utils/R/utils.R
@@ -21,7 +21,10 @@
 
 eval(expression({
 	excludedPkgs <- c("rJava")
-	excludedPkgsMsgs <- c("CRAN rJava is not supported on FastR, but you can download and install rJava compatible replacement package from https://github.com/oracle/fastr/master/com.oracle.truffle.r.pkgs/rJava")
+	excludedPkgsMsgs <- c(paste0(
+		"CRAN rJava is not supported on FastR, but you can download and install rJava compatible replacement package ",
+		"from https://github.com/oracle/fastr/master/com.oracle.truffle.r.pkgs/rJava.\n",
+		"  Install it using 'R --jvm CMD INSTALL {fastr}/com.oracle.truffle.r.pkgs/rJava' and make sure that 'which R' points to FastR. "))
 
 	fastRPkgFilter <- function (av) {
 		# The following statement will assign the url of the FastR clone of rJava, when ready (possibly on GitHub).
diff --git a/com.oracle.truffle.r.native/run/Makefile b/com.oracle.truffle.r.native/run/Makefile
index 24e74d213a..2fd145b827 100644
--- a/com.oracle.truffle.r.native/run/Makefile
+++ b/com.oracle.truffle.r.native/run/Makefile
@@ -90,6 +90,7 @@ $(FASTR_BIN_DIR)/R: Makefile R.sh Rscript.sh Rscript_exec.sh Rclasspath.sh
 	cp $(GNUR_HOME_BINARY)/etc/javaconf $(FASTR_ETC_DIR)/javaconf
 	cp $(GNUR_HOME_BINARY)/etc/repositories $(FASTR_ETC_DIR)/repositories
 	cp $(GNUR_HOME_BINARY)/etc/ldpaths $(FASTR_ETC_DIR)/ldpaths
+	# the ed script adds -DFASTR to compiler options and removes JAVA related variables
 	ed Makeconf.etc < edMakeconf.etc
 	
 	echo $(DEFAULT_CRAN_MIRROR) > $(FASTR_ETC_DIR)/DEFAULT_CRAN_MIRROR
diff --git a/com.oracle.truffle.r.native/run/edMakeconf.etc b/com.oracle.truffle.r.native/run/edMakeconf.etc
index cd5f1cecb1..56acb23b41 100644
--- a/com.oracle.truffle.r.native/run/edMakeconf.etc
+++ b/com.oracle.truffle.r.native/run/edMakeconf.etc
@@ -1,6 +1,7 @@
 /^CFLAGS/s/$/ -DFASTR/
 /^CXXFLAGS/s/$/ -DFASTR/
 /^CPPFLAGS/s/$/ -DFASTR/
+g/JAVA_HOME =/d
 /LIBINTL=/
 d
 /LIBR =/
diff --git a/com.oracle.truffle.r.pkgs/rJava/src/Makevars b/com.oracle.truffle.r.pkgs/rJava/src/Makevars
index 238e93d69d..17ea02876e 100644
--- a/com.oracle.truffle.r.pkgs/rJava/src/Makevars
+++ b/com.oracle.truffle.r.pkgs/rJava/src/Makevars
@@ -1,6 +1,6 @@
 JAVA_SRC=$(wildcard java/*.java)
 JFLAGS=-source 1.6 -target 1.6
-JAVAC=javac
+JAVAC=${JAVA_HOME}/bin/javac
 
 all: $(SHLIB)
 $(SHLIB): java
@@ -8,7 +8,7 @@ $(SHLIB): java
 .PHONY: all java
 
 java: $(JAVA_SRC)
-	$(JAVAC) $(JFLAGS) $(JAVA_SRC)
+	$(JAVAC) $(JFLAGS) $(JAVA_SRC) || (echo "ERROR: compilation failed, do you have properly configured JAVA_HOME environment variable?"; exit 1)
 	rm -rfv ../inst/java
 	mkdir -p ../inst/java
 	mv java/*.class ../inst/java
diff --git a/com.oracle.truffle.r.pkgs/rJava/src/java/Makefile b/com.oracle.truffle.r.pkgs/rJava/src/java/Makefile
deleted file mode 100644
index a476c84733..0000000000
--- a/com.oracle.truffle.r.pkgs/rJava/src/java/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-##
- # This material is distributed under the GNU General Public License
- # Version 2. You may review the terms of this license at
- # http://www.gnu.org/licenses/gpl-2.0.html
- #
- # Copyright (c) 2006, Simon Urbanek
- # Copyright (c) 2018, Oracle and/or its affiliates
- #
- # All rights reserved.
-##
-
-JAVA_SRC=$(wildcard *.java)
-JFLAGS=-source 1.6 -target 1.6
-JAVAC=javac
-JAVA=java
-JAVADOC=javadoc
-JAVADOCFLAGS=-author -version -breakiterator -link http://java.sun.com/j2se/1.4.2/docs/api
-
-all: compile test
-
-compile: $(JAVA_SRC)
-	$(JAVAC) $(JFLAGS) $(JAVA_SRC)
-
-test_RJavaTools: compile
-	$(JAVA) RJavaTools_Test
-
-test_RJavaArrayTools: compile
-	$(JAVA) RJavaArrayTools_Test
-
-test_ArrayWrapper:
-	$(JAVA) ArrayWrapper_Test
-
-test_RectangularArrayBuilder:
-	$(JAVA) RectangularArrayBuilder_Test
-
-test: compile test_RJavaTools test_RJavaArrayTools test_ArrayWrapper test_RectangularArrayBuilder
-
-javadoc:
-	$(JAVADOC) $(JAVADOCFLAGS) -d javadoc $(JAVA_SRC)
-
-clean:
-	rm -rfv *.class *~
-
-.PHONY: all clean
-
-- 
GitLab