From 829d549fe5660b2b206bc63b0898cf69884e37e7 Mon Sep 17 00:00:00 2001
From: Stefan Anzinger <stefan.anzinger@oracle.com>
Date: Wed, 25 Apr 2018 16:35:20 +0200
Subject: [PATCH] Update ci.hocon for r-apptests as downstream for fastr.

---
 ci.hocon               | 268 +----------------------------------------
 ci_common/common.hocon | 199 ++++++++++++++++++++++++++++++
 2 files changed, 201 insertions(+), 266 deletions(-)
 create mode 100644 ci_common/common.hocon

diff --git a/ci.hocon b/ci.hocon
index e83063bb4e..5f38d91f1e 100644
--- a/ci.hocon
+++ b/ci.hocon
@@ -3,272 +3,11 @@
 # but it provide details on the commands that are used and these should be
 # executable in isolation; see further comments below.
 
-# java 7 is needed by Truffle (for now)
-java7 : {name : oraclejdk, version : "7",    platformspecific: true}
-# java 8 must be a jvmci enabled variant
-java8 : {name : labsjdk, version : "8u161-jvmci-0.41", platformspecific: true}
-java9 : {name : labsjdk, version : "9-ea+168", platformspecific: true}
-
-java8Downloads : {
-  downloads : {
-    EXTRA_JAVA_HOMES : { pathlist :[
-      ${java7}
-      ${java9}
-    ]}
-    JAVA_HOME : ${java8}
-  }
-}
-
-java9Downloads : {
-  downloads : {
-    EXTRA_JAVA_HOMES : { pathlist :[
-      ${java7}
-      ${java8}
-    ]}
-    JAVA_HOME : ${java9}
-  }
-}
-
-logfiles : [
-    "fastr_errors.log"
-    "results.json"
-    "libdownloads/R-*/gnur_configure.log"
-    "libdownloads/R-*/config.log"
-    "libdownloads/R-*/gnur_make.log"
-    "libdownloads/R-*/Makeconf"
-    "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"
-  ]
-
-# This is needed by all (Linux) builds but is specific to the module system employed
-# on the CI cluster. Not all of the modules are needed by FastR but all are needed by the
-# embedded GNU R that is built within FastR.
-
-pkgEnvironment: {
-  environment : {
-    PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/zlib/1.2.8/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/curl/7.50.1/include"""
-    PKG_LDFLAGS_OVERRIDE : """"-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64""""
-	TZDIR: "/usr/share/zoneinfo"
-  }
-}
-
-packagesLinux : ${pkgEnvironment} {
-  packages : {
-    git : ">=1.8.3"
-    mercurial : ">=2.2"
-    "pip:astroid" : "==1.1.0"
-    "pip:pylint" : "==1.1.0"
-    make : ">=3.83"
-    gcc-build-essentials : "==4.9.1" # GCC 4.9.0 fails on cluster
-    readline : "==6.3"
-    pcre : ">=8.38"
-    zlib : ">=1.2.8"
-    curl : ">=7.50.1"
-  }
-}
-
-packagesDarwin : {
-  "pip:astroid" : "==1.1.0"
-  "pip:pylint" : "==1.1.0"
-  "pcre" : "==8.38"
-}
-
-# Common settings for all builds but note that it uses the Linux package settings,
-# so these must be overridden in any darwin builds
-
-common : ${java8Downloads} ${packagesLinux}  {
-  logs: ${logfiles}
-  timelimit : "1:00:00"
-}
-
-# Every "pull request" (PR) is subject to a series of "gate" commands that must pass
-# for the PR to be accepted into the master branch. The gate commands are run under
-# the "mx" tool. This defines a common prefix for all gate commands. The "-t"
-# arg indicates the exact set of gate "tasks" that will be run.
-
-gateCmd : ["mx", "--strict-compliance", "rgate", "-B=--force-deprecation-as-warning", "--strict-mode", "-t"]
-
-# currently disabled gate commands: FindBugs,Checkheaders,Distribution Overlap Check
-
-# The standard set of gate tasks: the actual executable tests are in the "UnitTests" task.
-
-gateTestCommon : ${common} {
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac,UnitTests: with specials,Rembedded"]
-  ]
-}
-
-gateTestLinux : ${gateTestCommon}  {
-}
-
-gateTestNoSpecialsLinux : ${common}  {
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac,UnitTests: no specials"]
-  ]
-}
-
-darwinEnvironment : {
-  environment :  {
-    PATH : "/usr/local/bin:$JAVA_HOME/bin:$PATH"
-    F77: "/usr/local/bin/gfortran-4.9"
-    TZDIR: "/usr/share/zoneinfo"
-	  PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/curl/7.50.1/include"""
-    PKG_LDFLAGS_OVERRIDE : """" -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64 -L/usr/local/Cellar/gcc@4.9/4.9.4/lib/gcc/4.9/ -L/usr/lib""""
-  }
-}
-
-gateTestDarwin : ${gateTestCommon} ${darwinEnvironment}  {
-  packages : ${packagesDarwin}
-}
-
-gateTestLinuxNFI : ${gateTestCommon}  {
-  environment :  {
-      FASTR_RFFI : "nfi"
-      TZDIR: "/usr/share/zoneinfo"
-  }
-}
-
-requireGCC: {
-    downloads: {
-        DRAGONEGG_GCC: {name: "gcc+dragonegg", version: "4.6.4-1", platformspecific: true}
-        DRAGONEGG_LLVM: {name: "clang+llvm", version: "3.2", platformspecific: true}
-    }
-}
-
-gateTestLinuxLLVM : ${common} ${requireGCC}  {
-
-  packages: {
-      llvm: "==3.8"
-  }
-
-  environment :  {
-      TZDIR: "/usr/share/zoneinfo"
-      FASTR_RFFI : "llvm"
-      FASTR_LLVM_TOOLS : "$DRAGONEGG_LLVM/bin"
-      FASTR_LLVM_GFORTRAN_LLVM_AS : "$DRAGONEGG_LLVM/bin/llvm-as"
-      FASTR_LLVM_GFORTRAN : "$DRAGONEGG_GCC/bin/gfortran"
-      FASTR_LLVM_DRAGONEGG : "$DRAGONEGG_GCC/lib/dragonegg.so"
-      DEFAULT_DYNAMIC_IMPORTS : "sulong"
-  }
-
-  setup: [
-    ["git", "clone", ["mx", "urlrewrite", "https://github.com/graalvm/sulong.git"], "../sulong"],
-    ["mx", "sforceimports"],
-    ["git","clone", "--depth", "1", ${repoBase}"r-apptests.git", "../r-apptests"]
-  ]
-
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac"]
-    ["mx", "rscript", "../r-apptests/renjin-tests/driver.R", "--setwd", "../r-apptests/renjin-tests/"]
-    ["mx", "pkgtest", "--repos", "FASTR", "--run-tests", "testrffi"]
-  ]
-}
-
-gateTestJava9Linux : ${java9Downloads} ${gateTestCommon} {
-  downloads : {
-    JAVA_HOME : ${java9Downloads.downloads.JAVA_HOME}
-    EXTRA_JAVA_HOMES : ${java9Downloads.downloads.EXTRA_JAVA_HOMES}
-  }
-}
-
-gateTestDarwinLLVM: ${common} ${darwinEnvironment} ${requireGCC}  {
-  packages : ${packagesDarwin} {
-    llvm: "==4.0.1"
-  }
-
-  environment :  {
-      FASTR_RFFI : "llvm"
-      FASTR_LLVM_TOOLS : "$DRAGONEGG_LLVM/bin"
-      FASTR_LLVM_GFORTRAN_LLVM_AS : "$DRAGONEGG_LLVM/bin/llvm-as"
-      FASTR_LLVM_GFORTRAN : "$DRAGONEGG_GCC/bin/gfortran"
-      FASTR_LLVM_DRAGONEGG : "$DRAGONEGG_GCC/lib/dragonegg.so"
-      DEFAULT_DYNAMIC_IMPORTS : "sulong"
-      # homebrew doesn't put llvm on the path by default
-      PATH: "/usr/local/Cellar/llvm@4/4.0.1/bin:$PATH"
-      LC_MESSAGES: "en_US"
-	  LC_COLLATE: "en_US"
-	  LC_TIME: "en_US"
-	  LC_MONETARY: "en_US"
-	  LC_COLLATE: "en_US.UTF-8"
-  }
-
-  setup: [
-    ["ls", "/usr/local/Cellar"]
-    ["git", "clone", ["mx", "urlrewrite", "https://github.com/graalvm/sulong.git"], "../sulong"],
-    ["mx", "sforceimports"],
-    ["git", "clone", "--depth", "1", ${repoBase}"r-apptests.git", "../r-apptests"]
-  ]
-
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac"]
-    ["mx", "rscript", "../r-apptests/renjin-tests/driver.R", "--setwd", "../r-apptests/renjin-tests/"]
-    ["mx", "pkgtest", "--repos", "FASTR", "--run-tests", "testrffi"]
-  ]
-}
-
-# This performs a number of "style" checks on the code to ensure it confirms to the project standards.
-
-gateStyle : ${common} {
-  # need pyhocon fix
-  downloads : {
-    JAVA_HOME : ${java8Downloads.downloads.JAVA_HOME}
-    EXTRA_JAVA_HOMES : ${java8Downloads.downloads.EXTRA_JAVA_HOMES}
-    JDT : {name: ecj, version: "4.5.1", platformspecific: false}
-    ECLIPSE : {name: eclipse, version: "4.5.2", platformspecific: true}
-  }
-  environment : {
-    ECLIPSE_EXE : "$ECLIPSE/eclipse"
-  }
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,Pylint,Canonicalization Check,BuildJavaWithJavac,IDEConfigCheck,CodeFormatCheck,Checkstyle,Copyright check,UnitTests: ExpectedTestOutput file check"]
-  ]
-}
-
-gateBuildWithEcj : ${common} {
-  # need pyhocon fix
-  downloads : {
-    JAVA_HOME : ${java8Downloads.downloads.JAVA_HOME}
-    EXTRA_JAVA_HOMES : ${java8Downloads.downloads.EXTRA_JAVA_HOMES}
-    JDT : {name: ecj, version: "4.5.1", platformspecific: false}
-    ECLIPSE : {name: eclipse, version: "4.5.2", platformspecific: true}
-  }
-  environment : {
-    ECLIPSE_EXE : "$ECLIPSE/eclipse"
-  }
-  run : [
-    ["mx", "build"]
-  ]
-}
-
-# This check runs diagnostics on the implementation of the R "builtins" in FastR, e.g., that the argument processing is sound.
-
-rbcheck : ${common} {
-  run : [
-    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac"]
-    ["mx", "rbcheck"]
-    ["mx", "rbdiag"]
-  ]
-}
-
-internalPkgtest: ${common} {
-  run : [
-    ["mx", "build"]
-    ["mx", "pkgtest", "--repos", "FASTR", "--pkg-filelist", "com.oracle.truffle.r.test.native/packages/pkg-filelist"]
-  ]
-  logs: ${common.logs}
-}
-
-gnurTests: ${common} {
-  run : [
-    ["mx", "build"]
-    ["mx", "gnu-rtests"]
-  ]
-}
+include "ci_common/common.hocon"
 
 # The standard set of gate builds. N.B. the style/builtin checks are only run on Linux as they are not OS-dependent.
 
+overlay = "82b7056d549b998878586415dc111954467c1e44"
 builds = [
   ${gateTestLinux}            {capabilities : [linux, amd64, fast],  targets : [gate], name: "gate-test-linux-amd64"}
   ${gateTestNoSpecialsLinux}  {capabilities : [linux, amd64, fast],  targets : [gate], name: "gate-test-linux-amd64-nospecials"}
@@ -279,7 +18,4 @@ builds = [
   ${internalPkgtest}          {capabilities : [linux, amd64],  targets : [gate], name: "gate-internal-pkgtest-linux-amd64"}
   ${gateTestJava9Linux}       {capabilities : [linux, amd64, fast],  targets : [gate], name: "gate-test-java9-linux-amd64"}
   ${gnurTests}                {capabilities : [linux, amd64, fast],  targets : [gate], name: "gate-gnur-tests"}
-  # disabled because of spurious dragonegg problems
-  #${gateTestLinuxLLVM}        {capabilities: [linux, amd64], targets : [gate], name: "gate-test-llvm-linux-amd64" }
-  #${gateTestDarwinLLVM}        {capabilities: [darwin_sierra, amd64], targets : [gate], name: "gate-test-llvm-darwin-amd64" }
 ]
diff --git a/ci_common/common.hocon b/ci_common/common.hocon
new file mode 100644
index 0000000000..ffa56d3245
--- /dev/null
+++ b/ci_common/common.hocon
@@ -0,0 +1,199 @@
+# java 7 is needed by Truffle (for now)
+java7 : {name : oraclejdk, version : "7",    platformspecific: true}
+# java 8 must be a jvmci enabled variant
+java8 : {name : labsjdk, version : "8u161-jvmci-0.41", platformspecific: true}
+java9 : {name : labsjdk, version : "9-ea+168", platformspecific: true}
+
+java8Downloads : {
+  downloads : {
+    EXTRA_JAVA_HOMES : { pathlist :[
+      ${java7}
+      ${java9}
+    ]}
+    JAVA_HOME : ${java8}
+  }
+}
+
+java9Downloads : {
+  downloads : {
+    EXTRA_JAVA_HOMES : { pathlist :[
+      ${java7}
+      ${java8}
+    ]}
+    JAVA_HOME : ${java9}
+  }
+}
+
+logfiles : [
+    "fastr_errors.log"
+    "results.json"
+    "libdownloads/R-*/gnur_configure.log"
+    "libdownloads/R-*/config.log"
+    "libdownloads/R-*/gnur_make.log"
+    "libdownloads/R-*/Makeconf"
+    "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"
+  ]
+
+# This is needed by all (Linux) builds but is specific to the module system employed
+# on the CI cluster. Not all of the modules are needed by FastR but all are needed by the
+# embedded GNU R that is built within FastR.
+
+pkgEnvironment: {
+  environment : {
+    PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/zlib/1.2.8/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/curl/7.50.1/include"""
+    PKG_LDFLAGS_OVERRIDE : """"-L/cm/shared/apps/zlib/1.2.8/lib -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64""""
+	TZDIR: "/usr/share/zoneinfo"
+  }
+}
+
+packagesLinux : ${pkgEnvironment} {
+  packages : {
+    git : ">=1.8.3"
+    mercurial : ">=2.2"
+    "pip:astroid" : "==1.1.0"
+    "pip:pylint" : "==1.1.0"
+    make : ">=3.83"
+    gcc-build-essentials : "==4.9.1" # GCC 4.9.0 fails on cluster
+    readline : "==6.3"
+    pcre : ">=8.38"
+    zlib : ">=1.2.8"
+    curl : ">=7.50.1"
+  }
+}
+
+packagesDarwin : {
+  "pip:astroid" : "==1.1.0"
+  "pip:pylint" : "==1.1.0"
+  "pcre" : "==8.38"
+}
+
+# Common settings for all builds but note that it uses the Linux package settings,
+# so these must be overridden in any darwin builds
+
+common : ${java8Downloads} ${packagesLinux}  {
+  logs: ${logfiles}
+  timelimit : "1:00:00"
+}
+
+# Every "pull request" (PR) is subject to a series of "gate" commands that must pass
+# for the PR to be accepted into the master branch. The gate commands are run under
+# the "mx" tool. This defines a common prefix for all gate commands. The "-t"
+# arg indicates the exact set of gate "tasks" that will be run.
+
+gateCmd : ["mx", "--strict-compliance", "rgate", "-B=--force-deprecation-as-warning", "--strict-mode", "-t"]
+
+# currently disabled gate commands: FindBugs,Checkheaders,Distribution Overlap Check
+
+# The standard set of gate tasks: the actual executable tests are in the "UnitTests" task.
+
+gateTestCommon : ${common} {
+  run : [
+    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac,UnitTests: with specials,Rembedded"]
+  ]
+}
+
+gateTestLinux : ${gateTestCommon}  {
+}
+
+gateTestNoSpecialsLinux : ${common}  {
+  run : [
+    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac,UnitTests: no specials"]
+  ]
+}
+
+darwinEnvironment : {
+  environment :  {
+    PATH : "/usr/local/bin:$JAVA_HOME/bin:$PATH"
+    F77: "/usr/local/bin/gfortran-4.9"
+    TZDIR: "/usr/share/zoneinfo"
+	  PKG_INCLUDE_FLAGS_OVERRIDE : """-I/cm/shared/apps/pcre/8.38/include -I/cm/shared/apps/bzip2/1.0.6/include -I/cm/shared/apps/xz/5.2.2/include -I/cm/shared/apps/curl/7.50.1/include"""
+    PKG_LDFLAGS_OVERRIDE : """" -L/cm/shared/apps/bzip2/1.0.6/lib -L/cm/shared/apps/xz/5.2.2/lib -L/cm/shared/apps/pcre/8.38/lib -L/cm/shared/apps/curl/7.50.1/lib -L/cm/shared/apps/gcc/4.9.1/lib64 -L/usr/local/Cellar/gcc@4.9/4.9.4/lib/gcc/4.9/ -L/usr/lib""""
+  }
+}
+
+gateTestDarwin : ${gateTestCommon} ${darwinEnvironment}  {
+  packages : ${packagesDarwin}
+}
+
+gateTestLinuxNFI : ${gateTestCommon}  {
+  environment :  {
+      FASTR_RFFI : "nfi"
+      TZDIR: "/usr/share/zoneinfo"
+  }
+}
+
+requireGCC: {
+    downloads: {
+        DRAGONEGG_GCC: {name: "gcc+dragonegg", version: "4.6.4-1", platformspecific: true}
+        DRAGONEGG_LLVM: {name: "clang+llvm", version: "3.2", platformspecific: true}
+    }
+}
+
+gateTestJava9Linux : ${java9Downloads} ${gateTestCommon} {
+  downloads : {
+    JAVA_HOME : ${java9Downloads.downloads.JAVA_HOME}
+    EXTRA_JAVA_HOMES : ${java9Downloads.downloads.EXTRA_JAVA_HOMES}
+  }
+}
+
+# This performs a number of "style" checks on the code to ensure it confirms to the project standards.
+
+gateStyle : ${common} {
+  # need pyhocon fix
+  downloads : {
+    JAVA_HOME : ${java8Downloads.downloads.JAVA_HOME}
+    EXTRA_JAVA_HOMES : ${java8Downloads.downloads.EXTRA_JAVA_HOMES}
+    JDT : {name: ecj, version: "4.5.1", platformspecific: false}
+    ECLIPSE : {name: eclipse, version: "4.5.2", platformspecific: true}
+  }
+  environment : {
+    ECLIPSE_EXE : "$ECLIPSE/eclipse"
+  }
+  run : [
+    ${gateCmd} ["Versions,JDKReleaseInfo,Pylint,Canonicalization Check,BuildJavaWithJavac,IDEConfigCheck,CodeFormatCheck,Checkstyle,Copyright check,UnitTests: ExpectedTestOutput file check"]
+  ]
+}
+
+gateBuildWithEcj : ${common} {
+  # need pyhocon fix
+  downloads : {
+    JAVA_HOME : ${java8Downloads.downloads.JAVA_HOME}
+    EXTRA_JAVA_HOMES : ${java8Downloads.downloads.EXTRA_JAVA_HOMES}
+    JDT : {name: ecj, version: "4.5.1", platformspecific: false}
+    ECLIPSE : {name: eclipse, version: "4.5.2", platformspecific: true}
+  }
+  environment : {
+    ECLIPSE_EXE : "$ECLIPSE/eclipse"
+  }
+  run : [
+    ["mx", "build"]
+  ]
+}
+
+# This check runs diagnostics on the implementation of the R "builtins" in FastR, e.g., that the argument processing is sound.
+
+rbcheck : ${common} {
+  run : [
+    ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac"]
+    ["mx", "rbcheck"]
+    ["mx", "rbdiag"]
+  ]
+}
+
+internalPkgtest: ${common} {
+  run : [
+    ["mx", "build"]
+    ["mx", "pkgtest", "--repos", "FASTR", "--pkg-filelist", "com.oracle.truffle.r.test.native/packages/pkg-filelist"]
+  ]
+  logs: ${common.logs}
+}
+
+gnurTests: ${common} {
+  run : [
+    ["mx", "build"]
+    ["mx", "gnu-rtests"]
+  ]
+}
-- 
GitLab