Skip to content

Commit

Permalink
Fix handling of missing ConfigurationGroup property (#24077)
Browse files Browse the repository at this point in the history
* Account for missing ConfigurationGroup

Our logic for setting the CoreCLR and Mono runtime configurations didn't
properly account for cases where only `$(Configuration)` was passed down
as a build property. It expects that both `$(Configuration)` and
`$(ConfigurationGroup)` are passed down as a pair.

This change guards against us accidentially setting the runtime
configuration to the current library definition of configuration which
is more like a target framework than Debug or Release.

Related to #23800

* Test for missing ConfigurationGroup
  • Loading branch information
jaredpar authored Jan 31, 2020
1 parent e5c1f66 commit 8f0d191
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 9 deletions.
3 changes: 2 additions & 1 deletion eng/Configurations.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<!-- Honor the generic RuntimeConfiguration property. -->
<PropertyGroup>
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">$(ConfigurationGroup)</RuntimeConfiguration>
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">$(Configuration)</RuntimeConfiguration>
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == '' AND ('$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release')">$(Configuration)</RuntimeConfiguration>
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">Debug</RuntimeConfiguration>
<CoreCLRConfiguration Condition="'$(CoreCLRConfiguration)' == ''">$(RuntimeConfiguration)</CoreCLRConfiguration>
<MonoConfiguration Condition="'$(MonoConfiguration)' == '' and '$(RuntimeConfiguration.ToLower())' != 'checked'">$(RuntimeConfiguration)</MonoConfiguration>
<!-- There's no checked configuration on Mono. -->
Expand Down
9 changes: 5 additions & 4 deletions eng/pipelines/common/global-build-job.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
parameters:
buildConfig: ''
runtimeConfig: ''
nameSuffix: ''
buildArgs: ''
archType: ''
osGroup: ''
osSubgroup: ''
Expand All @@ -12,8 +13,8 @@ parameters:
jobs:
- template: /eng/common/templates/job/job.yml
parameters:
name: ${{ format('build_{0}{1}_{2}_{3}_runtime{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeConfig) }}
displayName: ${{ format('Build {0}{1} {2} {3} Runtime {4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeConfig) }}
name: ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
displayName: ${{ format('Build {0}{1} {2} {3} {4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
dependsOn: checkout
pool: ${{ parameters.pool }}
container: ${{ parameters.container }}
Expand All @@ -36,7 +37,7 @@ jobs:
- template: /eng/pipelines/common/clone-checkout-bundle-step.yml

# Build
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -c ${{ parameters.buildConfig }} -runtimeConfiguration ${{ parameters.runtimeConfig }} -arch ${{ parameters.archType }} -ci
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci -arch ${{ parameters.archType }} ${{ parameters.buildArgs }}
displayName: Build product

- task: PublishBuildArtifacts@1
Expand Down
25 changes: 21 additions & 4 deletions eng/pipelines/global-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
- template: /eng/pipelines/common/checkout-job.yml

#
# Build the combined runtime repo
# Build with Release config and Debug runtimeConfiguration
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
Expand All @@ -46,10 +46,11 @@ jobs:
- OSX_x64
jobParameters:
testGroup: innerloop
runtimeConfig: debug
nameSuffix: Runtime_Debug
buildArgs: -c release -runtimeConfiguration debug

#
# Build the combined runtime repo
# Build with Debug config and Release runtimeConfiguration
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
Expand All @@ -59,4 +60,20 @@ jobs:
- Linux_x64
jobParameters:
testGroup: innerloop
runtimeConfig: release
nameSuffix: Runtime_Release
buildArgs: -c debug -runtimeConfiguration release

#
# Build with RuntimeFlavor only. This excercise code paths where only Configuration is
# specified. Catches cases where we depend on ConfigurationGroup also being specified
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: debug
platforms:
- Linux_x64
jobParameters:
testGroup: innerloop
nameSuffix: RuntimeFlavor_Mono
buildArgs: /p:RuntimeFlavor=Mono

0 comments on commit 8f0d191

Please sign in to comment.