diff --git a/ci.hocon b/ci.hocon index bd89ac5666dd23484b533f73722fc22bca4da813..99fe13999bd42d2af1834853497038578c51f568 100644 --- a/ci.hocon +++ b/ci.hocon @@ -1,6 +1,21 @@ +# This is part of the framework used by FastR for continuous integration testing. +# It is not intended that this "code" is directly usable by third-party developers +# but it provide details on the commands that are used and these should be +# executable in isolation; see further comments below. + java7 : {name : oraclejdk, version : "7", platformspecific: true} #java8 : {name : oraclejdk, version : "8u66", platformspecific: true} java8 : {name : labsjdk, version : "8u92-jvmci-0.21", platformspecific: true} + +java8Downloads : { + downloads : { + EXTRA_JAVA_HOMES : { pathlist :[ + ${java7} + ]} + JAVA_HOME : ${java8} + } +} + logfiles : [ "fastr_errors.log" "com.oracle.truffle.r.native/gnur/R-*/gnur_configure.log" @@ -10,60 +25,64 @@ logfiles : [ "com.oracle.truffle.r.native/gnur/libiconv-*/iconv_make.log" ] -common : { +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 + gcc-build-essentials : "==4.9.1" # GCC 4.9.0 fails on cluster readline : "==6.3" + pcre : ">=8.38" + z : ">=1.2.8" } - # TODO this will eventually relocate elsewhere - 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"""" - } - logs: ${logfiles} - timelimit : "1:00:00" } -gateCmd : ["mx", "--strict-compliance", "originalgate", "--strict-mode", "-t"] - -java8Downloads : { - downloads : { - EXTRA_JAVA_HOMES : { pathlist :[ - ${java7} - ]} - JAVA_HOME : ${java8} - } -} - -gateTest : ${common} ${java8Downloads} { - run : [ - ${gateCmd} ["Versions,JDKReleaseInfo,Pylint,Canonicalization Check,BuildJavaWithJavac,LDD, UnitTests: ExpectedTestOutput file check,UnitTests"] - ] -} - -gateTestDarwin : ${java8Downloads} { +packagesDarwin : { packages : { "pip:astroid" : "==1.1.0" "pip:pylint" : "==1.1.0" "xz" : "" + # assume pcre/z system installed } - environment : { - PATH : "/usr/local/bin:$JAVA_HOME/bin:$PATH" - F77: "/usr/local/bin/gfortran-4.9" - } +} + +# 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", "gate", "--strict-mode", "-t"] + +# currently disabled gate commands: FindBugs,Checkheaders,Distribution Overlap Check,BuildJavaWithEcj + +# The standard set of gate tasks: the actual executable tests are in the "UnitTests" task. +gateTestCommon : ${common} { run : [ - ${gateCmd} ["Versions,JDKReleaseInfo,Pylint,Canonicalization Check,BuildJavaWithJavac,LDD, UnitTests: ExpectedTestOutput file check,UnitTests"] + ${gateCmd} ["Versions,JDKReleaseInfo,BuildJavaWithJavac,UnitTests: ExpectedTestOutput file check,UnitTests"] ] } +gateTestLinux : ${gateTestCommon} { +} + +gateTestDarwin : ${gateTestCommon} ${darwinEnvironment} { + packages : ${packagesDarwin} { + } +} + +# This performs a number of "style" checks on the code to ensure it confirms to the project standards. + gateStyle : ${common} { # need pyhocon fix downloads : { @@ -72,7 +91,7 @@ gateStyle : ${common} { JDT : {name: ecj, version: "4.5.1", platformspecific: false} ECLIPSE : {name: eclipse, version: "4.5.2", platformspecific: true} } - environment : ${common.environment} { + environment : { ECLIPSE_EXE : "$ECLIPSE/eclipse" } run : [ @@ -80,20 +99,21 @@ gateStyle : ${common} { ] } -rbcheck : ${common} ${java8Downloads} { +# 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", "-n", "-m"] - ] + ] } -# currently disabled gate commands: FindBugs,Checkheaders,Distribution Overlap Check,BuildJavaWithEcj +# The standard set of gate builds. N.B. the style/builtin checks are only run on Linux as they are not OS-dependent. builds = [ - ${gateTest} {capabilities : [linux, amd64], targets : [gate, post-merge], name: "gate-test-linux-amd64"} - ${gateStyle} {capabilities : [linux, amd64], targets : [gate, post-merge], name: "gate-style-linux-amd64"} + ${gateTestLinux} {capabilities : [linux, amd64], targets : [gate, post-merge], name: "gate-test-linux-amd64"} ${gateTestDarwin} {capabilities : [darwin, amd64], targets : [gate, post-merge], name: "gate-test-darwin-amd64"} + ${gateStyle} {capabilities : [linux, amd64], targets : [gate, post-merge], name: "gate-style-linux-amd64"} ${rbcheck} {capabilities : [linux, amd64], targets : [gate, post-merge], name: "gate-rbcheck-linux-amd64"} -# ${gateTest} {capabilities : [linux, sparcv9], targets : [gate, post-merge], name: "gate-test-linux-sparcv9"} ]