diff --git a/ci.hocon b/ci.hocon index e83063bb4e3f0a7aa7f282d8869580bea25f11b9..659ca4a568f70aca20e15f4c4f3c964798ac8567 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 = "6c3623c5f1394db280dca1243f88e61f806672f2" 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 0000000000000000000000000000000000000000..ffa56d32454dda424815012c2addf39ef7e54db8 --- /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"] + ] +}