Skip to content

Commit 8f0d191

Browse files
authored
Fix handling of missing ConfigurationGroup property (#24077)
* 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
1 parent e5c1f66 commit 8f0d191

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

eng/Configurations.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<!-- Honor the generic RuntimeConfiguration property. -->
33
<PropertyGroup>
44
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">$(ConfigurationGroup)</RuntimeConfiguration>
5-
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">$(Configuration)</RuntimeConfiguration>
5+
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == '' AND ('$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release')">$(Configuration)</RuntimeConfiguration>
6+
<RuntimeConfiguration Condition="'$(RuntimeConfiguration)' == ''">Debug</RuntimeConfiguration>
67
<CoreCLRConfiguration Condition="'$(CoreCLRConfiguration)' == ''">$(RuntimeConfiguration)</CoreCLRConfiguration>
78
<MonoConfiguration Condition="'$(MonoConfiguration)' == '' and '$(RuntimeConfiguration.ToLower())' != 'checked'">$(RuntimeConfiguration)</MonoConfiguration>
89
<!-- There's no checked configuration on Mono. -->

eng/pipelines/common/global-build-job.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
parameters:
22
buildConfig: ''
3-
runtimeConfig: ''
3+
nameSuffix: ''
4+
buildArgs: ''
45
archType: ''
56
osGroup: ''
67
osSubgroup: ''
@@ -12,8 +13,8 @@ parameters:
1213
jobs:
1314
- template: /eng/common/templates/job/job.yml
1415
parameters:
15-
name: ${{ format('build_{0}{1}_{2}_{3}_runtime{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeConfig) }}
16-
displayName: ${{ format('Build {0}{1} {2} {3} Runtime {4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.runtimeConfig) }}
16+
name: ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
17+
displayName: ${{ format('Build {0}{1} {2} {3} {4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
1718
dependsOn: checkout
1819
pool: ${{ parameters.pool }}
1920
container: ${{ parameters.container }}
@@ -36,7 +37,7 @@ jobs:
3637
- template: /eng/pipelines/common/clone-checkout-bundle-step.yml
3738

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

4243
- task: PublishBuildArtifacts@1

eng/pipelines/global-build.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- template: /eng/pipelines/common/checkout-job.yml
3636

3737
#
38-
# Build the combined runtime repo
38+
# Build with Release config and Debug runtimeConfiguration
3939
#
4040
- template: /eng/pipelines/common/platform-matrix.yml
4141
parameters:
@@ -46,10 +46,11 @@ jobs:
4646
- OSX_x64
4747
jobParameters:
4848
testGroup: innerloop
49-
runtimeConfig: debug
49+
nameSuffix: Runtime_Debug
50+
buildArgs: -c release -runtimeConfiguration debug
5051

5152
#
52-
# Build the combined runtime repo
53+
# Build with Debug config and Release runtimeConfiguration
5354
#
5455
- template: /eng/pipelines/common/platform-matrix.yml
5556
parameters:
@@ -59,4 +60,20 @@ jobs:
5960
- Linux_x64
6061
jobParameters:
6162
testGroup: innerloop
62-
runtimeConfig: release
63+
nameSuffix: Runtime_Release
64+
buildArgs: -c debug -runtimeConfiguration release
65+
66+
#
67+
# Build with RuntimeFlavor only. This excercise code paths where only Configuration is
68+
# specified. Catches cases where we depend on ConfigurationGroup also being specified
69+
#
70+
- template: /eng/pipelines/common/platform-matrix.yml
71+
parameters:
72+
jobTemplate: /eng/pipelines/common/global-build-job.yml
73+
buildConfig: debug
74+
platforms:
75+
- Linux_x64
76+
jobParameters:
77+
testGroup: innerloop
78+
nameSuffix: RuntimeFlavor_Mono
79+
buildArgs: /p:RuntimeFlavor=Mono

0 commit comments

Comments
 (0)