Skip to content

Commit a3dc08c

Browse files
tmdsjkoritzinsky
authored andcommitted
Pass TargetRid and SourceBuildNonPortable to the native scripts (#74504)
* Pass SourceBuild TargetRid and SourceBuildPortable args through the native script. * Rename -packagerid to -distrorid. * Fix init-distro-rid.sh. * Use OutputRid instead of PackageRid. * Drop unnecessary Condition. * Try passing --distrorid as OutputRid. * NativeExport: use PackageRID for AppHostRuntimeIdentifier. * Rename --distrorid to --outputrid. * Fix SourceBuild.props. * Undo changes to init-distro-rid.sh. * Let source-build leg build 'banana-x64' rid. * SourceBuild.props: don't force a RuntimeOS. * SourceBuild.props: set AdditionalRuntimeIdentifierParent. * Build banana.24-x64 instead. * Fix SourceBuild.props. * SourceBuild.props: try fix AdditionalRuntimeIdentifier* usage. * source-build.yml: add runtimeOS parameter. * SourceBuild.props: derive RuntimeOS from NETCoreSdkRuntimeIdentifier. * Undo using NETCoreSdkRuntimeIdentifier. * Update eng/pipelines/common/global-build-job.yml Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com> Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
1 parent 25fc72d commit a3dc08c

File tree

9 files changed

+57
-13
lines changed

9 files changed

+57
-13
lines changed

eng/SourceBuild.props

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,45 @@
1111
<SourceBuildPortable>true</SourceBuildPortable>
1212
<SourceBuildPortable Condition="'$(SourceBuildNonPortable)' == 'true'">false</SourceBuildPortable>
1313

14-
<!-- If TargetRid not specified, detect RID based on portability. -->
14+
<!-- TargetRid names what gets built. -->
1515
<TargetRid Condition="'$(TargetRid)' == '' and '$(SourceBuildNonPortable)' == 'true'">$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)</TargetRid>
1616
<TargetRid Condition="'$(TargetRid)' == ''">$(__DistroRid)</TargetRid>
1717

1818
<!-- Split e.g. 'fedora.33-x64' into 'fedora.33' and 'x64'. -->
1919
<_targetRidPlatformIndex>$(TargetRid.LastIndexOf('-'))</_targetRidPlatformIndex>
20-
<TargetRidWithoutPlatform>$(TargetRid.Substring(0, $(_targetRidPlatformIndex)))</TargetRidWithoutPlatform>
21-
<TargetRidPlatform>$(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))</TargetRidPlatform>
20+
<TargetArch>$(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))</TargetArch>
21+
22+
<!-- RuntimeOS is the build host rid OS. -->
23+
<RuntimeOS>$(TargetRid.Substring(0, $(_targetRidPlatformIndex)))</RuntimeOS>
24+
25+
<!-- BaseOS is an expected known rid in the graph that TargetRid is compatible with.
26+
It's used to add TargetRid in the graph if the parent can't be detected. -->
27+
<BaseOS>$(RuntimeOS)</BaseOS>
2228

2329
<LogVerbosity Condition="'$(LogVerbosity)' == ''">minimal</LogVerbosity>
2430
</PropertyGroup>
2531

2632
<Target Name="GetRuntimeSourceBuildCommandConfiguration"
2733
BeforeTargets="GetSourceBuildCommandConfiguration">
2834
<PropertyGroup>
29-
<InnerBuildArgs>$(InnerBuildArgs) --arch $(TargetRidPlatform)</InnerBuildArgs>
35+
<InnerBuildArgs>$(InnerBuildArgs) --arch $(TargetArch)</InnerBuildArgs>
3036
<InnerBuildArgs>$(InnerBuildArgs) --configuration $(Configuration)</InnerBuildArgs>
3137
<InnerBuildArgs Condition="'$(SourceBuildNonPortable)' == 'true'">$(InnerBuildArgs) --allconfigurations</InnerBuildArgs>
3238
<InnerBuildArgs>$(InnerBuildArgs) --verbosity $(LogVerbosity)</InnerBuildArgs>
3339
<InnerBuildArgs>$(InnerBuildArgs) --nodereuse false</InnerBuildArgs>
3440
<InnerBuildArgs>$(InnerBuildArgs) --warnAsError false</InnerBuildArgs>
35-
<InnerBuildArgs>$(InnerBuildArgs) /p:PackageRid=$(TargetRid)</InnerBuildArgs>
41+
<InnerBuildArgs>$(InnerBuildArgs) --outputrid $(TargetRid)</InnerBuildArgs>
42+
<InnerBuildArgs>$(InnerBuildArgs) --portablebuild $(SourceBuildPortable)</InnerBuildArgs>
3643
<InnerBuildArgs>$(InnerBuildArgs) /p:NoPgoOptimize=true</InnerBuildArgs>
3744
<InnerBuildArgs>$(InnerBuildArgs) /p:KeepNativeSymbols=true</InnerBuildArgs>
38-
<InnerBuildArgs>$(InnerBuildArgs) /p:RuntimeOS=$(TargetRidWithoutPlatform)</InnerBuildArgs>
39-
<InnerBuildArgs>$(InnerBuildArgs) /p:PortableBuild=$(SourceBuildPortable)</InnerBuildArgs>
45+
<InnerBuildArgs>$(InnerBuildArgs) /p:RuntimeOS=$(RuntimeOS)</InnerBuildArgs>
46+
<InnerBuildArgs Condition="'$(OfficialBuildId)' != ''">$(InnerBuildArgs) /p:OfficialBuildId=$(OfficialBuildId)</InnerBuildArgs>
47+
<InnerBuildArgs Condition="'$(ContinuousIntegrationBuild)' != ''">$(InnerBuildArgs) /p:ContinuousIntegrationBuild=$(ContinuousIntegrationBuild)</InnerBuildArgs>
4048
<InnerBuildArgs>$(InnerBuildArgs) /p:BuildDebPackage=false</InnerBuildArgs>
4149
<InnerBuildArgs>$(InnerBuildArgs) /p:EnableNgenOptimization=false</InnerBuildArgs>
4250
<InnerBuildArgs>$(InnerBuildArgs) /p:EnablePackageValidation=false</InnerBuildArgs>
4351
<InnerBuildArgs>$(InnerBuildArgs) /p:DisableSourceLink=false</InnerBuildArgs>
52+
<InnerBuildArgs>$(InnerBuildArgs) /p:AdditionalRuntimeIdentifierParent=$(BaseOS)</InnerBuildArgs>
4453
<InnerBuildArgs Condition="'$(SourceBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:PrimaryRuntimeFlavor=Mono /p:RuntimeFlavor=Mono</InnerBuildArgs>
4554
</PropertyGroup>
4655
</Target>

eng/build.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ usage()
3131
echo " --os Target operating system: windows, Linux, FreeBSD, OSX, MacCatalyst, tvOS,"
3232
echo " tvOSSimulator, iOS, iOSSimulator, Android, Browser, NetBSD, illumos or Solaris."
3333
echo " [Default: Your machine's OS.]"
34+
echo " --outputrid <rid> Optional argument that overrides the target rid name."
3435
echo " --projects <value> Project or solution file(s) to build."
3536
echo " --runtimeConfiguration (-rc) Runtime build configuration: Debug, Release or Checked."
3637
echo " Checked is exclusive to the CLR runtime. It is the same as Debug, except code is"
@@ -402,6 +403,15 @@ while [[ $# > 0 ]]; do
402403
shift 1
403404
;;
404405

406+
-outputrid)
407+
if [ -z ${2+x} ]; then
408+
echo "No value for outputrid is supplied. See help (--help) for supported values." 1>&2
409+
exit 1
410+
fi
411+
arguments="$arguments /p:OutputRid=$(echo "$2" | tr "[:upper:]" "[:lower:]")"
412+
shift 2
413+
;;
414+
405415
-portablebuild)
406416
if [ -z ${2+x} ]; then
407417
echo "No value for portablebuild is supplied. See help (--help) for supported values." 1>&2

eng/common/templates/steps/source-build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ steps:
6363
targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
6464
fi
6565
66+
runtimeOsArgs=
67+
if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then
68+
runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}'
69+
fi
70+
6671
publishArgs=
6772
if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then
6873
publishArgs='--publish'
@@ -75,6 +80,7 @@ steps:
7580
$internalRuntimeDownloadArgs \
7681
$internalRestoreArgs \
7782
$targetRidArgs \
83+
$runtimeOsArgs \
7884
/p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \
7985
/p:ArcadeBuildFromSource=true
8086
displayName: Build

eng/native/build-commons.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ usage()
212212
echo "-gccx.y: optional argument to build using gcc version x.y."
213213
echo "-ninja: target ninja instead of GNU make"
214214
echo "-numproc: set the number of build processes."
215+
echo "-outputrid: optional argument that overrides the target rid name."
215216
echo "-portablebuild: pass -portablebuild=false to force a non-portable build."
216217
echo "-skipconfigure: skip build configuration."
217218
echo "-keepnativesymbols: keep native/unmanaged debug symbols."
@@ -232,6 +233,7 @@ __TargetArch=$arch
232233
__TargetOS=$os
233234
__HostOS=$os
234235
__BuildOS=$os
236+
__OutputRid=''
235237

236238
# Get the number of processors available to the scheduler
237239
# Other techniques such as `nproc` only get the number of
@@ -396,6 +398,16 @@ while :; do
396398
__TargetArch=wasm
397399
;;
398400

401+
outputrid|-outputrid)
402+
if [[ -n "$2" ]]; then
403+
__OutputRid="$2"
404+
shift
405+
else
406+
echo "ERROR: 'outputrid' requires a non-empty option argument"
407+
exit 1
408+
fi
409+
;;
410+
399411
ppc64le|-ppc64le)
400412
__TargetArch=ppc64le
401413
;;
@@ -478,3 +490,7 @@ fi
478490

479491
# init the target distro name
480492
initTargetDistroRid
493+
494+
if [ -z "$__OutputRid" ]; then
495+
__OutputRid="$(echo $__DistroRid | tr '[:upper:]' '[:lower:]')"
496+
fi

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ jobs:
141141
platform:
142142
buildScript: $(_sclEnableCommand) $(Build.SourcesDirectory)$(dir)build$(scriptExt)
143143
nonPortable: true
144+
# Use a custom RID that isn't in the RID graph here to validate we don't break the usage of custom rids that aren't in the graph.
145+
targetRID: banana.24-x64
146+
runtimeOS: linux
144147

145148
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'MacCatalyst') }}:
146149
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO

src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputPath>$(RuntimeBinDir)ilc/</OutputPath>
4-
<RuntimeIdentifier>$(OutputRid)</RuntimeIdentifier>
4+
<RuntimeIdentifier>$(PackageRID)</RuntimeIdentifier>
55
</PropertyGroup>
66

77
<Import Project="ILCompiler.props" />

src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<DnneGenRollForward>Major</DnneGenRollForward>
1010
<!-- To integrate with DNNE's architecture calculation, we need to set the RID for this project. -->
1111
<RuntimeIdentifier>$(OutputRid)</RuntimeIdentifier>
12-
<AppHostRuntimeIdentifier>$(OutputRid)</AppHostRuntimeIdentifier>
12+
<AppHostRuntimeIdentifier>$(PackageRID)</AppHostRuntimeIdentifier>
1313
<_TargetsAppleOS Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'MacCatalyst' or
1414
'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'iOSSimulator' or
1515
'$(TargetOS)' == 'tvOSSimulator'">true</_TargetsAppleOS>

src/native/corehost/build.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,13 @@ __LogsDir="$__RootBinDir/log"
7474
__MsbuildDebugLogsDir="$__LogsDir/MsbuildDebugLogs"
7575

7676
# Set the remaining variables based upon the determined build configuration
77-
__DistroRidLower="$(echo $__DistroRid | tr '[:upper:]' '[:lower:]')"
78-
__BinDir="$__RootBinDir/bin/$__DistroRidLower.$__BuildType"
79-
__IntermediatesDir="$__RootBinDir/obj/$__DistroRidLower.$__BuildType"
77+
__BinDir="$__RootBinDir/bin/$__OutputRid.$__BuildType"
78+
__IntermediatesDir="$__RootBinDir/obj/$__OutputRid.$__BuildType"
8079

8180
export __BinDir __IntermediatesDir __RuntimeFlavor
8281

8382
__CMakeArgs="-DCLI_CMAKE_HOST_VER=\"$__host_ver\" -DCLI_CMAKE_COMMON_HOST_VER=\"$__apphost_ver\" -DCLI_CMAKE_HOST_FXR_VER=\"$__fxr_ver\" $__CMakeArgs"
84-
__CMakeArgs="-DCLI_CMAKE_HOST_POLICY_VER=\"$__policy_ver\" -DCLI_CMAKE_PKG_RID=\"$__DistroRid\" -DCLI_CMAKE_COMMIT_HASH=\"$__commit_hash\" $__CMakeArgs"
83+
__CMakeArgs="-DCLI_CMAKE_HOST_POLICY_VER=\"$__policy_ver\" -DCLI_CMAKE_PKG_RID=\"$__OutputRid\" -DCLI_CMAKE_COMMIT_HASH=\"$__commit_hash\" $__CMakeArgs"
8584
__CMakeArgs="-DRUNTIME_FLAVOR=\"$__RuntimeFlavor\" $__CMakeArgs"
8685
__CMakeArgs="-DFEATURE_DISTRO_AGNOSTIC_SSL=$__PortableBuild $__CMakeArgs"
8786

src/native/corehost/corehost.proj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
<BuildArgs Condition="'$(Ninja)' == 'true'">$(BuildArgs) -ninja</BuildArgs>
8282
<BuildArgs>$(BuildArgs) -runtimeflavor $(RuntimeFlavor)</BuildArgs>
8383
<BuildArgs Condition="'$(OfficialBuildId)' != ''">$(BuildArgs) /p:OfficialBuildId="$(OfficialBuildId)"</BuildArgs>
84+
<BuildArgs>$(BuildArgs) -outputrid $(OutputRid)</BuildArgs>
8485
</PropertyGroup>
8586

8687
<!--

0 commit comments

Comments
 (0)