diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
index d574e5a53ce44..ebf8e683ed0ce 100644
--- a/eng/SourceBuild.props
+++ b/eng/SourceBuild.props
@@ -11,14 +11,20 @@
true
false
-
+
$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)
$(__DistroRid)
<_targetRidPlatformIndex>$(TargetRid.LastIndexOf('-'))
- $(TargetRid.Substring(0, $(_targetRidPlatformIndex)))
- $(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))
+ $(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))
+
+
+ $(TargetRid.Substring(0, $(_targetRidPlatformIndex)))
+
+
+ $(RuntimeOS)
minimal
@@ -26,21 +32,22 @@
- $(InnerBuildArgs) --arch $(TargetRidPlatform)
+ $(InnerBuildArgs) --arch $(TargetArch)
$(InnerBuildArgs) --configuration $(Configuration)
$(InnerBuildArgs) --allconfigurations
$(InnerBuildArgs) --verbosity $(LogVerbosity)
$(InnerBuildArgs) --nodereuse false
$(InnerBuildArgs) --warnAsError false
- $(InnerBuildArgs) /p:PackageRid=$(TargetRid)
+ $(InnerBuildArgs) --outputrid $(TargetRid)
+ $(InnerBuildArgs) --portablebuild $(SourceBuildPortable)
$(InnerBuildArgs) /p:NoPgoOptimize=true
$(InnerBuildArgs) /p:KeepNativeSymbols=true
- $(InnerBuildArgs) /p:RuntimeOS=$(TargetRidWithoutPlatform)
- $(InnerBuildArgs) /p:PortableBuild=$(SourceBuildPortable)
+ $(InnerBuildArgs) /p:RuntimeOS=$(RuntimeOS)
$(InnerBuildArgs) /p:OfficialBuildId=$(OfficialBuildId)
$(InnerBuildArgs) /p:ContinuousIntegrationBuild=$(ContinuousIntegrationBuild)
$(InnerBuildArgs) /p:BuildDebPackage=false
$(InnerBuildArgs) /p:EnableNgenOptimization=false
+ $(InnerBuildArgs) /p:AdditionalRuntimeIdentifierParent=$(BaseOS)
diff --git a/eng/build.sh b/eng/build.sh
index f9ef572f3a06c..50f73f3a10fe1 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -33,6 +33,7 @@ usage()
echo " --os Target operating system: windows, Linux, FreeBSD, OSX, MacCatalyst, tvOS,"
echo " tvOSSimulator, iOS, iOSSimulator, Android, Browser, NetBSD, illumos or Solaris."
echo " [Default: Your machine's OS.]"
+ echo " --outputrid Optional argument that overrides the target rid name."
echo " --projects Project or solution file(s) to build."
echo " --runtimeConfiguration (-rc) Runtime build configuration: Debug, Release or Checked."
echo " Checked is exclusive to the CLR runtime. It is the same as Debug, except code is"
@@ -424,6 +425,15 @@ while [[ $# > 0 ]]; do
shift 1
;;
+ -outputrid)
+ if [ -z ${2+x} ]; then
+ echo "No value for outputrid is supplied. See help (--help) for supported values." 1>&2
+ exit 1
+ fi
+ arguments="$arguments /p:OutputRid=$(echo "$2" | tr "[:upper:]" "[:lower:]")"
+ shift 2
+ ;;
+
-portablebuild)
if [ -z ${2+x} ]; then
echo "No value for portablebuild is supplied. See help (--help) for supported values." 1>&2
diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml
index 12a8ff94d8e96..4624885e3bfeb 100644
--- a/eng/common/templates/steps/source-build.yml
+++ b/eng/common/templates/steps/source-build.yml
@@ -63,6 +63,11 @@ steps:
targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
fi
+ runtimeOsArgs=
+ if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then
+ runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}'
+ fi
+
publishArgs=
if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then
publishArgs='--publish'
@@ -75,6 +80,7 @@ steps:
$internalRuntimeDownloadArgs \
$internalRestoreArgs \
$targetRidArgs \
+ $runtimeOsArgs \
/p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \
/p:ArcadeBuildFromSource=true
displayName: Build
diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
index dd0dea81cd619..ae0761c84a1af 100755
--- a/eng/native/build-commons.sh
+++ b/eng/native/build-commons.sh
@@ -212,6 +212,7 @@ usage()
echo "-gccx.y: optional argument to build using gcc version x.y."
echo "-ninja: target ninja instead of GNU make"
echo "-numproc: set the number of build processes."
+ echo "-outputrid: optional argument that overrides the target rid name."
echo "-portablebuild: pass -portablebuild=false to force a non-portable build."
echo "-skipconfigure: skip build configuration."
echo "-keepnativesymbols: keep native/unmanaged debug symbols."
@@ -232,6 +233,7 @@ __TargetArch=$arch
__TargetOS=$os
__HostOS=$os
__BuildOS=$os
+__OutputRid=''
# Get the number of processors available to the scheduler
platform="$(uname)"
@@ -392,6 +394,16 @@ while :; do
__TargetArch=wasm
;;
+ outputrid|-outputrid)
+ if [[ -n "$2" ]]; then
+ __OutputRid="$2"
+ shift
+ else
+ echo "ERROR: 'outputrid' requires a non-empty option argument"
+ exit 1
+ fi
+ ;;
+
ppc64le|-ppc64le)
__TargetArch=ppc64le
;;
@@ -474,3 +486,7 @@ fi
# init the target distro name
initTargetDistroRid
+
+if [ -z "$__OutputRid" ]; then
+ __OutputRid="$(echo $__DistroRid | tr '[:upper:]' '[:lower:]')"
+fi
diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml
index e1a8e45ba97bc..61ee087bfa0cc 100644
--- a/eng/pipelines/common/global-build-job.yml
+++ b/eng/pipelines/common/global-build-job.yml
@@ -141,6 +141,9 @@ jobs:
platform:
buildScript: $(_sclEnableCommand) $(Build.SourcesDirectory)$(dir)build$(scriptExt)
nonPortable: true
+ # 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.
+ targetRID: banana.24-x64
+ runtimeOS: linux
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'MacCatalyst') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
diff --git a/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj b/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj
index 6dfd4edfebb2c..1614166ff4ff2 100644
--- a/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj
+++ b/src/coreclr/tools/aot/ILCompiler/ILCompiler.csproj
@@ -1,7 +1,7 @@
$(RuntimeBinDir)ilc/
- $(OutputRid)
+ $(PackageRID)
true
diff --git a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj
index d420161d1a6eb..57344f0474432 100644
--- a/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj
+++ b/src/libraries/System.Runtime.InteropServices/tests/TestAssets/NativeExports/NativeExports.csproj
@@ -9,7 +9,7 @@
Major
$(OutputRid)
- $(OutputRid)
+ $(PackageRID)
<_TargetsAppleOS Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'MacCatalyst' or
'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'iOSSimulator' or
'$(TargetOS)' == 'tvOSSimulator'">true
diff --git a/src/native/corehost/build.sh b/src/native/corehost/build.sh
index ae44091c54892..f300b10f672f5 100755
--- a/src/native/corehost/build.sh
+++ b/src/native/corehost/build.sh
@@ -74,14 +74,13 @@ __LogsDir="$__RootBinDir/log"
__MsbuildDebugLogsDir="$__LogsDir/MsbuildDebugLogs"
# Set the remaining variables based upon the determined build configuration
-__DistroRidLower="$(echo $__DistroRid | tr '[:upper:]' '[:lower:]')"
-__BinDir="$__RootBinDir/bin/$__DistroRidLower.$__BuildType"
-__IntermediatesDir="$__RootBinDir/obj/$__DistroRidLower.$__BuildType"
+__BinDir="$__RootBinDir/bin/$__OutputRid.$__BuildType"
+__IntermediatesDir="$__RootBinDir/obj/$__OutputRid.$__BuildType"
export __BinDir __IntermediatesDir __RuntimeFlavor
__CMakeArgs="-DCLI_CMAKE_HOST_VER=\"$__host_ver\" -DCLI_CMAKE_COMMON_HOST_VER=\"$__apphost_ver\" -DCLI_CMAKE_HOST_FXR_VER=\"$__fxr_ver\" $__CMakeArgs"
-__CMakeArgs="-DCLI_CMAKE_HOST_POLICY_VER=\"$__policy_ver\" -DCLI_CMAKE_PKG_RID=\"$__DistroRid\" -DCLI_CMAKE_COMMIT_HASH=\"$__commit_hash\" $__CMakeArgs"
+__CMakeArgs="-DCLI_CMAKE_HOST_POLICY_VER=\"$__policy_ver\" -DCLI_CMAKE_PKG_RID=\"$__OutputRid\" -DCLI_CMAKE_COMMIT_HASH=\"$__commit_hash\" $__CMakeArgs"
__CMakeArgs="-DRUNTIME_FLAVOR=\"$__RuntimeFlavor\" $__CMakeArgs"
__CMakeArgs="-DFEATURE_DISTRO_AGNOSTIC_SSL=$__PortableBuild $__CMakeArgs"
diff --git a/src/native/corehost/corehost.proj b/src/native/corehost/corehost.proj
index a706b6e94275f..372d508b13b76 100644
--- a/src/native/corehost/corehost.proj
+++ b/src/native/corehost/corehost.proj
@@ -81,6 +81,7 @@
$(BuildArgs) -ninja
$(BuildArgs) -runtimeflavor $(RuntimeFlavor)
$(BuildArgs) /p:OfficialBuildId="$(OfficialBuildId)"
+ $(BuildArgs) -outputrid $(OutputRid)