diff --git a/Directory.Build.props b/Directory.Build.props
index 5cb87bb7c25725..54ae373485c0fa 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -210,6 +210,10 @@
$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackRidDir)', 'native'))
+
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', '$(OutputRid).$(Configuration)', 'corehost'))
+
+
true
diff --git a/eng/Subsets.props b/eng/Subsets.props
index b2292ac98e61c8..be4c6a8862480b 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -120,7 +120,14 @@
-
+
+
+
+
+
+
+
+
@@ -130,13 +137,6 @@
-
-
-
-
-
-
-
@@ -263,6 +263,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -288,22 +304,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/eng/pipelines/common/platform-matrix.yml b/eng/pipelines/common/platform-matrix.yml
index 15fe948e92967e..244240a68f32fb 100644
--- a/eng/pipelines/common/platform-matrix.yml
+++ b/eng/pipelines/common/platform-matrix.yml
@@ -205,6 +205,32 @@ jobs:
${{ insert }}: ${{ parameters.jobParameters }}
buildingOnSourceBuildImage: true
+# Linux s390x
+
+- ${{ if containsValue(parameters.platforms, 'Linux_s390x') }}:
+ - template: xplat-setup.yml
+ parameters:
+ jobTemplate: ${{ parameters.jobTemplate }}
+ helixQueuesTemplate: ${{ parameters.helixQueuesTemplate }}
+ variables: ${{ parameters.variables }}
+ osGroup: Linux
+ archType: s390x
+ targetRid: linux-s390x
+ platform: Linux_s390x
+ container:
+ image: ubuntu-18.04-cross-s390x-20201102145728-d6e0352
+ registry: mcr
+ jobParameters:
+ runtimeFlavor: ${{ parameters.runtimeFlavor }}
+ stagedBuild: ${{ parameters.stagedBuild }}
+ buildConfig: ${{ parameters.buildConfig }}
+ ${{ if eq(parameters.passPlatforms, true) }}:
+ platforms: ${{ parameters.platforms }}
+ helixQueueGroup: ${{ parameters.helixQueueGroup }}
+ crossBuild: true
+ crossrootfsDir: '/crossrootfs/s390x'
+ ${{ insert }}: ${{ parameters.jobParameters }}
+
# WebAssembly
- ${{ if containsValue(parameters.platforms, 'Browser_wasm') }}:
diff --git a/eng/pipelines/common/variables.yml b/eng/pipelines/common/variables.yml
index c724f4beb367f9..e2ed01f836cf55 100644
--- a/eng/pipelines/common/variables.yml
+++ b/eng/pipelines/common/variables.yml
@@ -14,9 +14,10 @@ variables:
- name: isFullMatrix
value: ${{ and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}
-# We only run evaluate paths on runtime and runtime-staging pipelines on PRs
+# We only run evaluate paths on runtime, runtime-staging and runtime-community pipelines on PRs
+# keep in sync with /eng/pipelines/common/xplat-setup.yml
- name: dependOnEvaluatePaths
- value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging')) }}
+ value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community')) }}
- name: debugOnPrReleaseOnRolling
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
value: Release
diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml
index 2010c653f89cc2..9c9861e3a963f1 100644
--- a/eng/pipelines/common/xplat-setup.yml
+++ b/eng/pipelines/common/xplat-setup.yml
@@ -22,7 +22,7 @@ jobs:
shouldContinueOnError: ${{ and(endsWith(variables['Build.DefinitionName'], 'staging'), eq(variables['Build.Reason'], 'PullRequest')) }}
# keep in sync with /eng/pipelines/common/variables.yml
- dependOnEvaluatePaths: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging')) }}
+ dependOnEvaluatePaths: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community')) }}
variables:
# Disable component governance in our CI builds. These builds are not shipping nor
diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml
index 880aa8939932c0..3dc5d4dc2ee604 100644
--- a/eng/pipelines/libraries/helix-queues-setup.yml
+++ b/eng/pipelines/libraries/helix-queues-setup.yml
@@ -85,6 +85,10 @@ jobs:
# Limiting interp runs as we don't need as much coverage.
- Debian.9.Amd64.Open
+ # Linux s390x
+ - ${{ if eq(parameters.platform, 'Linux_s390x') }}:
+ - Ubuntu.2004.S390X.Experimental.Open
+
# OSX arm64
- ${{ if eq(parameters.platform, 'OSX_arm64') }}:
- OSX.1100.ARM64.Open
diff --git a/eng/pipelines/runtime-community.yml b/eng/pipelines/runtime-community.yml
new file mode 100644
index 00000000000000..9ecb1f2677ae2d
--- /dev/null
+++ b/eng/pipelines/runtime-community.yml
@@ -0,0 +1,60 @@
+trigger: none
+
+schedules:
+ - cron: "0 7,19 * * *" # run at 7:00 and 19:00 (UTC) which is 23:00 and 11:00 (PST).
+ displayName: Runtime-community default schedule
+ branches:
+ include:
+ - main
+ - release/*.*
+ always: false # run only if there were changes since the last successful scheduled run.
+
+variables:
+ - template: /eng/pipelines/common/variables.yml
+
+jobs:
+#
+# Evaluate paths
+#
+- ${{ if eq(variables.dependOnEvaluatePaths, true) }}:
+ - template: /eng/pipelines/common/evaluate-default-paths.yml
+
+#
+# s390x
+# Build the whole product using Mono and run libraries tests
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - Linux_s390x
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isFullMatrix'], true))
+ # extra steps, run tests
+ extraStepsTemplate: /eng/pipelines/libraries/helix.yml
+ extraStepsParameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
diff --git a/src/installer/pkg/Directory.Build.props b/src/installer/pkg/Directory.Build.props
index 10f36b399c73b6..f51718676368a2 100644
--- a/src/installer/pkg/Directory.Build.props
+++ b/src/installer/pkg/Directory.Build.props
@@ -3,7 +3,6 @@
$(TargetArchitecture)
- $(ArtifactsBinDir)$(OutputRid).$(Configuration)\corehost
diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj
index 6ef3ddc0f19015..969ed9603a2cda 100644
--- a/src/libraries/externals.csproj
+++ b/src/libraries/externals.csproj
@@ -9,6 +9,7 @@
true
false
true
+ true
@@ -16,7 +17,7 @@
Version="$(MicrosoftDiaSymReaderNativeVersion)" />
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mono/mono.proj b/src/mono/mono.proj
index dd8140fb81e8be..fb98ffc1896906 100644
--- a/src/mono/mono.proj
+++ b/src/mono/mono.proj
@@ -506,6 +506,7 @@
<_Objcopy>objcopy
<_Objcopy Condition="'$(Platform)' == 'arm'">arm-linux-$(_LinuxAbi)eabi$(_LinuxFloatAbi)-$(_Objcopy)
<_Objcopy Condition="'$(Platform)' == 'arm64'">aarch64-linux-$(_LinuxAbi)-$(_Objcopy)
+ <_Objcopy Condition="'$(Platform)' == 's390x'">s390x-linux-$(_LinuxAbi)-$(_Objcopy)
<_Objcopy Condition="'$(Platform)' == 'x64'">x86_64-linux-$(_LinuxAbi)-$(_Objcopy)
<_Objcopy Condition="'$(Platform)' == 'x86'">i686-linux-$(_LinuxAbi)-$(_Objcopy)
<_Objcopy Condition="'$(TargetsAndroid)' == 'true'">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/bin/$(_Objcopy)