Add CI job and build.cmd command for building with FEATURE_STANDALONE_GC (dotnet...
authorSean Gillespie <sean@swgillespie.me>
Fri, 18 Nov 2016 20:57:38 +0000 (12:57 -0800)
committerGitHub <noreply@github.com>
Fri, 18 Nov 2016 20:57:38 +0000 (12:57 -0800)
* Add CI job and build.cmd command for building with FEATURE_STANDALONE_GC

* Add missed case

* Correct a condition

* Accidental fallthrough in switch

* Only run on x64

Commit migrated from https://github.com/dotnet/coreclr/commit/ecc468cf683513a2c3e1635f7abcdb06101eec38

src/coreclr/build.cmd
src/coreclr/netci.groovy

index 7d00382..ba3dcf4 100644 (file)
@@ -52,6 +52,7 @@ set __BuildTypeDebug=0
 set __BuildTypeChecked=0
 set __BuildTypeRelease=0
 set __BuildJit32="-DBUILD_JIT32=0"
+set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=0"
 
 set __PgoInstrument=0
 
@@ -109,6 +110,7 @@ if /i "%1" == "buildjit32"          (set __BuildJit32="-DBUILD_JIT32=1"&set proc
 if /i "%1" == "pgoinstrument"       (set __PgoInstrument=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
 if /i "%1" == "toolset_dir"         (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
 if /i "%1" == "altjitcrossgen"      (set __AltJitCrossgen=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "buildstandalonegc"    (set __BuildStandaloneGC="-DFEATURE_STANDALONE_GC=1"&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
 
 if [!processedArgs!]==[] (
   call set __UnprocessedBuildArgs=!__args!
@@ -246,7 +248,7 @@ if %__BuildNative% EQU 1 (
 
     pushd "%__IntermediatesDir%"
     set __ExtraCmakeArgs=!___SDKVersion! "-DCLR_CMAKE_TARGET_OS=%__BuildOs%" "-DCLR_CMAKE_PACKAGES_DIR=%__PackagesDir%" "-DCLR_CMAKE_PGO_INSTRUMENT=%__PgoInstrument%"
-    call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__BuildArch% %__BuildJit32% !__ExtraCmakeArgs!
+    call "%__SourceDir%\pal\tools\gen-buildsys-win.bat" "%__ProjectDir%" %__VSVersion% %__BuildArch% %__BuildJit32% %__BuildStandaloneGC% !__ExtraCmakeArgs!
        @if defined _echo @echo on
     popd
 :SkipConfigure
index 36ac5d1..8550d19 100755 (executable)
@@ -77,7 +77,7 @@ class Constants {
                                         'r2r_jitstressregs4', 'r2r_jitstressregs8', 'r2r_jitstressregsx10', 'r2r_jitstressregsx80',
                                         'r2r_jitminopts', 'r2r_jitforcerelocs']
     // This is the basic set of scenarios
-    def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc', 'coverage', 'formatting', 'gcsimulator'] + r2rJitStressScenarios
+    def static basicScenarios = ['default', 'pri1', 'ilrt', 'r2r', 'pri1r2r', 'gcstress15_pri1r2r', 'longgc', 'coverage', 'formatting', 'gcsimulator', 'standalone_gc'] + r2rJitStressScenarios
     def static configurationList = ['Debug', 'Checked', 'Release']
     // This is the set of architectures
     def static architectureList = ['arm', 'arm64', 'x64', 'x86ryujit', 'x86lb']
@@ -435,6 +435,13 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                 // TODO: Add once external email sending is available again
                 // addEmailPublisher(job, 'dotnetgctests@microsoft.com')
                 break
+            case 'standalone_gc':
+                assert (os == 'Windows_NT')
+                assert (configuration == 'Release' || configuration == 'Checked')
+                // TODO: Add once external email sending is available again
+                // addEmailPublisher(job, 'dotnetgctests@microsoft.com')
+                Utilities.addPeriodicTrigger(job, '@weekly')
+                break
             case 'ilrt':
                 assert !(os in bidailyCrossList)
                 // ILASM/ILDASM roundtrip one gets a daily build, and only for release
@@ -961,6 +968,11 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
                                 Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} GC Simulator", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
                             }
                             break
+                        case 'standalone_gc':
+                            if (configuration == 'Release' || configuration == 'Checked') {
+                                Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Standalone GC", "(?i).*test\\W+${os}\\W+${configuration}\\W+${scenario}.*")
+                            }
+                            break
                         case 'minopts':
                             assert (os == 'Windows_NT') || (os in Constants.crossList)
                             Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} ${configuration} Build and Test (Jit - MinOpts)",
@@ -1657,6 +1669,19 @@ combinedScenarios.each { scenario ->
                                     return
                                 }
                                 break
+                            case 'standalone_gc':
+                                if (os != 'Windows_NT') {
+                                    return
+                                }
+
+                                if (architecture != 'x64') {
+                                    return
+                                }
+
+                                if (configuration != 'Release' && configuration != 'Checked') {
+                                    return
+                                }
+                                break
                             // We need Windows x64 Release bits for the code coverage build
                             case 'coverage':
                                 if (os != 'Windows_NT') {
@@ -1754,6 +1779,9 @@ combinedScenarios.each { scenario ->
                                         buildCommands += "build.cmd ${lowerConfiguration} ${arch} ${buildOpts} skiptests"
                                         buildCommands += "set __TestIntermediateDir=int&&build-test.cmd ${lowerConfiguration} ${arch}"
                                     }
+                                    else if (scenario == 'standalone_gc') {
+                                        buildCommands += "build.cmd ${lowerConfiguration} ${arch} ${buildOpts} buildstandalonegc"
+                                    }
                                     else if (scenario == 'formatting') {
                                         buildCommands += "python -u tests\\scripts\\format.py -c %WORKSPACE% -o Windows_NT -a ${arch}"
                                         Utilities.addArchival(newJob, "format.patch", "", true, false)
@@ -2235,6 +2263,10 @@ combinedScenarios.each { scenario ->
                                     return
                                 }
                                 break
+                            case 'standalone_gc':
+                                if (configuration != 'Release' && configuration != 'Checked') {
+                                    return
+                                }
                             case 'coverage':
                                 //We only want Ubuntu Release for coverage
                                 if (os != 'Ubuntu') {