Skip to content

Commit c783b1f

Browse files
authored
Implement RID for SunOS-derived operating systems (#37016)
* Implement RID for SunOS-derived operating systems * Use official capitalization in all strings * Compile get rid functions separately
1 parent 8484d6c commit c783b1f

28 files changed

+579
-77
lines changed

eng/Configurations.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('OSX'))">OSX</TargetOS>
5353
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('FREEBSD'))">FreeBSD</TargetOS>
5454
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('NETBSD'))">NetBSD</TargetOS>
55-
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('SUNOS'))">SunOS</TargetOS>
55+
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('ILLUMOS'))">illumos</TargetOS>
56+
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('SOLARIS'))">Solaris</TargetOS>
5657
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSUnixLike())">Linux</TargetOS>
5758
<TargetOS Condition="'$(TargetOS)' == '' and $([MSBuild]::IsOSPlatform('WINDOWS'))">Windows_NT</TargetOS>
5859
<CoreCLRTargetOS Condition="'$(CoreCLRTargetOS)' == ''">$(TargetOS)</CoreCLRTargetOS>
@@ -70,4 +71,4 @@
7071
<!-- Enable NuGet static graph evaluation to optimize incremental restore -->
7172
<RestoreUseStaticGraphEvaluation>true</RestoreUseStaticGraphEvaluation>
7273
</PropertyGroup>
73-
</Project>
74+
</Project>

eng/build.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ usage()
2929
echo " --librariesConfiguration (-lc) Libraries build configuration: Debug or Release."
3030
echo " [Default: Debug]"
3131
echo " --os Target operating system: Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS, Android,"
32-
echo " Browser, NetBSD or SunOS."
32+
echo " Browser, NetBSD, illumos or Solaris."
3333
echo " [Default: Your machine's OS.]"
3434
echo " --projects <value> Project or solution file(s) to build."
3535
echo " --runtimeConfiguration (-rc) Runtime build configuration: Debug, Release or Checked."
@@ -115,7 +115,7 @@ usage()
115115

116116
initDistroRid()
117117
{
118-
source $scriptroot/native/init-distro-rid.sh
118+
source "$scriptroot"/native/init-distro-rid.sh
119119

120120
local passedRootfsDir=""
121121
local targetOs="$1"
@@ -206,7 +206,7 @@ while [[ $# > 0 ]]; do
206206
;;
207207

208208
-configuration|-c)
209-
if [ -z ${2+x} ]; then
209+
if [ -z ${2+x} ]; then
210210
echo "No configuration supplied. See help (--help) for supported configurations." 1>&2
211211
exit 1
212212
fi
@@ -258,11 +258,13 @@ while [[ $# > 0 ]]; do
258258
os="Android" ;;
259259
browser)
260260
os="Browser" ;;
261-
sunos)
262-
os="SunOS" ;;
261+
illumos)
262+
os="illumos" ;;
263+
solaris)
264+
os="Solaris" ;;
263265
*)
264266
echo "Unsupported target OS '$2'."
265-
echo "The allowed values are Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS, Android, Browser, and SunOS."
267+
echo "The allowed values are Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS, Android, Browser, illumos and Solaris."
266268
exit 1
267269
;;
268270
esac

eng/native/configureplatform.cmake

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,17 @@ if(CLR_CMAKE_HOST_OS STREQUAL SunOS)
159159
clr_unknown_arch()
160160
endif()
161161

162+
EXECUTE_PROCESS(
163+
COMMAND uname -o
164+
OUTPUT_VARIABLE SUNOS_KERNEL_KIND
165+
ERROR_QUIET)
166+
162167
set(CLR_CMAKE_HOST_SUNOS 1)
168+
if(SUNOS_KERNEL_KIND STREQUAL illumos)
169+
set(CLR_CMAKE_HOST_OS_ILLUMOS 1)
170+
else(SUNOS_KERNEL_KIND STREQUAL illumos)
171+
set(CLR_CMAKE_HOST_OS_SOLARIS 1)
172+
endif(SUNOS_KERNEL_KIND STREQUAL illumos)
163173
endif(CLR_CMAKE_HOST_OS STREQUAL SunOS)
164174

165175
if(CLR_CMAKE_HOST_OS STREQUAL Windows)
@@ -312,6 +322,11 @@ endif(CLR_CMAKE_TARGET_OS STREQUAL NetBSD)
312322

313323
if(CLR_CMAKE_TARGET_OS STREQUAL SunOS)
314324
set(CLR_CMAKE_TARGET_UNIX 1)
325+
if(CLR_CMAKE_HOST_OS_ILLUMOS)
326+
set(CLR_CMAKE_TARGET_OS_ILLUMOS 1)
327+
else(CLR_CMAKE_HOST_OS_ILLUMOS)
328+
set(CLR_CMAKE_TARGET_OS_SOLARIS 1)
329+
endif(CLR_CMAKE_HOST_OS_ILLUMOS)
315330
set(CLR_CMAKE_TARGET_SUNOS 1)
316331
endif(CLR_CMAKE_TARGET_OS STREQUAL SunOS)
317332

eng/native/init-distro-rid.sh

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,25 @@ initNonPortableDistroRid()
7070
elif getprop ro.product.system.model 2>&1 | grep -qi android; then
7171
__android_sdk_version=$(getprop ro.build.version.sdk)
7272
nonPortableBuildID="android.$__android_sdk_version-${buildArch}"
73+
elif [ "$targetOs" = "illumos" ]; then
74+
__uname_version=$(uname -v)
75+
case "$__uname_version" in
76+
omnios-*)
77+
__omnios_major_version=$(echo "${__uname_version:8:2}")
78+
nonPortableBuildID=omnios."$__omnios_major_version"-"$buildArch"
79+
;;
80+
joyent_*)
81+
__smartos_major_version=$(echo "${__uname_version:7:4}")
82+
nonPortableBuildID=smartos."$__smartos_major_version"-"$buildArch"
83+
;;
84+
illumos_*)
85+
nonPortableBuildID=openindiana-"$buildArch"
86+
;;
87+
esac
88+
elif [ "$targetOs" = "Solaris" ]; then
89+
__uname_version=$(uname -v)
90+
__solaris_major_version=$(echo "${__uname_version%.*}")
91+
nonPortableBuildID=solaris."$__solaris_major_version"-"$buildArch"
7392
fi
7493

7594
if [ -n "${nonPortableBuildID}" ]; then
@@ -169,8 +188,10 @@ initDistroRidGlobal()
169188
distroRid="browser-$buildArch"
170189
elif [ "$targetOs" = "FreeBSD" ]; then
171190
distroRid="freebsd-$buildArch"
172-
elif [ "$targetOs" = "SunOS" ]; then
173-
distroRid="sunos-$buildArch"
191+
elif [ "$targetOs" = "illumos" ]; then
192+
distroRid="illumos-$buildArch"
193+
elif [ "$targetOs" = "Solaris" ]; then
194+
distroRid="solaris-$buildArch"
174195
fi
175196
fi
176197

eng/native/init-os-and-arch.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fi
99

1010
case "$OSName" in
1111
FreeBSD|Linux|NetBSD|OpenBSD|SunOS|Android)
12-
os=$OSName ;;
12+
os="$OSName" ;;
1313
Darwin)
1414
os=OSX ;;
1515
*)
@@ -20,7 +20,12 @@ esac
2020
# On Solaris, `uname -m` is discoragued, see https://docs.oracle.com/cd/E36784_01/html/E36870/uname-1.html
2121
# and `uname -p` returns processor type (e.g. i386 on amd64).
2222
# The appropriate tool to determine CPU is isainfo(1) https://docs.oracle.com/cd/E36784_01/html/E36870/isainfo-1.html.
23-
if [ "$OSName" = "SunOS" ]; then
23+
if [ "$os" = "SunOS" ]; then
24+
if uname -o 2>&1 | grep -q illumos; then
25+
os="illumos"
26+
else
27+
os="Solaris"
28+
fi
2429
CPUName=$(isainfo -n)
2530
else
2631
# For rest of the operating systems, use uname(1) to determine what the CPU is.

eng/run-test.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ wait_on_pids()
1515

1616
usage()
1717
{
18-
echo "Runs .NET CoreFX tests on FreeBSD, Linux, NetBSD or SunOS"
18+
echo "Runs .NET CoreFX tests on FreeBSD, Linux, NetBSD, illumos or Solaris"
1919
echo "usage: run-test [options]"
2020
echo
2121
echo "Input sources:"
2222
echo " --runtime <location> Location of root of the binaries directory"
23-
echo " containing the FreeBSD, Linux, NetBSD or SunOS runtime"
23+
echo " containing the FreeBSD, Linux, NetBSD, illumos or Solaris runtime"
2424
echo " default: <repo_root>/bin/testhost/netcoreapp-<OS>-<Configuration>-<Arch>"
2525
echo " --corefx-tests <location> Location of the root binaries location containing"
2626
echo " the tests to run"
@@ -29,7 +29,7 @@ usage()
2929
echo "Flavor/OS/Architecture options:"
3030
echo " --configuration <config> Configuration to run (Debug/Release)"
3131
echo " default: Debug"
32-
echo " --os <os> OS to run (FreeBSD, Linux, NetBSD or SunOS)"
32+
echo " --os <os> OS to run (FreeBSD, Linux, NetBSD, illumos or Solaris)"
3333
echo " default: detect current OS"
3434
echo " --arch <Architecture> Architecture to run (x64, arm, armel, x86, arm64)"
3535
echo " default: detect current architecture"
@@ -254,7 +254,7 @@ then
254254
exit 1
255255
fi
256256

257-
if [ "$OS" != "FreeBSD" ] && [ "$OS" != "Linux" ] && [ "$OS" != "NetBSD" ] && [ "$OS" != "SunOS" ]
257+
if [ "$OS" != "FreeBSD" ] && [ "$OS" != "Linux" ] && [ "$OS" != "NetBSD" ] && [ "$OS" != "illumos" ] && [ "$OS" != "Solaris" ]
258258
then
259259
echo "error: OS should be FreeBSD, Linux, NetBSD or Linux"
260260
exit 1

eng/targetframeworksuffix.props

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,18 @@
6262
<PackageTargetRuntime>netbsd</PackageTargetRuntime>
6363
</PropertyGroup>
6464
</When>
65-
<When Condition="'$(TargetFrameworkSuffix)' == 'SunOS'">
65+
<When Condition="'$(TargetFrameworkSuffix)' == 'illumos'">
6666
<PropertyGroup>
6767
<TargetsUnix>true</TargetsUnix>
68-
<TargetsSunOS>true</TargetsSunOS>
69-
<PackageTargetRuntime>sunos</PackageTargetRuntime>
68+
<TargetsIllumos>true</TargetsIllumos>
69+
<PackageTargetRuntime>illumos</PackageTargetRuntime>
70+
</PropertyGroup>
71+
</When>
72+
<When Condition="'$(TargetFrameworkSuffix)' == 'Solaris'">
73+
<PropertyGroup>
74+
<TargetsUnix>true</TargetsUnix>
75+
<TargetsSolaris>true</TargetsSolaris>
76+
<PackageTargetRuntime>solaris</PackageTargetRuntime>
7077
</PropertyGroup>
7178
</When>
7279
<When Condition="'$(TargetFrameworkSuffix)' == 'Browser'">

src/coreclr/dir.common.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,12 @@
5555
<TargetsFreeBSD Condition="'$(TargetOS)' == 'FreeBSD'">true</TargetsFreeBSD>
5656
<TargetsLinux Condition="'$(TargetOS)' == 'Linux'">true</TargetsLinux>
5757
<TargetsNetBSD Condition="'$(TargetOS)' == 'NetBSD'">true</TargetsNetBSD>
58-
<TargetsSunOS Condition="'$(TargetOS)' == 'SunOS'">true</TargetsSunOS>
58+
<TargetsIllumos Condition="'$(TargetOS)' == 'illumos'">true</TargetsIllumos>
59+
<TargetsSolaris Condition="'$(TargetOS)' == 'Solaris'">true</TargetsSolaris>
5960
<TargetsOSX Condition="'$(TargetOS)' == 'OSX'">true</TargetsOSX>
6061
<TargetsWindows Condition="'$(TargetOS)' == 'Windows_NT'">true</TargetsWindows>
6162

62-
<TargetsUnix Condition="'$(TargetsFreeBSD)' == 'true' or '$(TargetsLinux)' == 'true' or '$(TargetsNetBSD)' == 'true' or '$(TargetsOSX)' == 'true' or '$(TargetsSunOS)' == 'true'">true</TargetsUnix>
63+
<TargetsUnix Condition="'$(TargetsFreeBSD)' == 'true' or '$(TargetsLinux)' == 'true' or '$(TargetsNetBSD)' == 'true' or '$(TargetsOSX)' == 'true' or '$(TargetsIllumos)' == 'true' or '$(TargetsSolaris)' == 'true'">true</TargetsUnix>
6364

6465
<!-- We are only tracking Linux Distributions for Nuget RID mapping -->
6566
<DistroRid Condition="'$(TargetsLinux)' == 'true'">$(__DistroRid)</DistroRid>

src/coreclr/src/.nuget/Directory.Build.props

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
<RuntimeOS Condition="'$(RuntimeOS)' == ''">$(OSRid)</RuntimeOS>
3030

31-
<SupportedPackageOSGroups Condition="'$(SupportedPackageOSGroups)' == ''">Windows_NT;OSX;Android;Linux;FreeBSD;NetBSD;SunOS</SupportedPackageOSGroups>
31+
<SupportedPackageOSGroups Condition="'$(SupportedPackageOSGroups)' == ''">Windows_NT;OSX;Android;Linux;FreeBSD;NetBSD;illumos;Solaris</SupportedPackageOSGroups>
3232
<SupportedPackageOSGroups>;$(SupportedPackageOSGroups);</SupportedPackageOSGroups>
3333

3434
<!-- Identify OS family based upon the RuntimeOS, which could be distro specific (e.g. osx.10.12) or
@@ -103,11 +103,18 @@
103103
<PackageRID Condition="'$(PortableBuild)' == 'true'">netbsd-$(TargetArchitecture)</PackageRID>
104104
</PropertyGroup>
105105
</When>
106-
<When Condition="'$(_runtimeOSFamily)' == 'sunos'">
106+
<When Condition="'$(_runtimeOSFamily)' == 'illumos'">
107107
<PropertyGroup>
108-
<PackageRID>sunos-$(TargetArchitecture)</PackageRID>
108+
<PackageRID>illumos-$(TargetArchitecture)</PackageRID>
109109
<!-- Set the platform part of the RID if we are doing a portable build -->
110-
<PackageRID Condition="'$(PortableBuild)' == 'true'">sunos-$(TargetArchitecture)</PackageRID>
110+
<PackageRID Condition="'$(PortableBuild)' == 'true'">illumos-$(TargetArchitecture)</PackageRID>
111+
</PropertyGroup>
112+
</When>
113+
<When Condition="'$(_runtimeOSFamily)' == 'solaris'">
114+
<PropertyGroup>
115+
<PackageRID>solaris-$(TargetArchitecture)</PackageRID>
116+
<!-- Set the platform part of the RID if we are doing a portable build -->
117+
<PackageRID Condition="'$(PortableBuild)' == 'true'">solaris-$(TargetArchitecture)</PackageRID>
111118
</PropertyGroup>
112119
</When>
113120
<When Condition="'$(_runtimeOSFamily)' == 'android'">
@@ -176,8 +183,11 @@
176183
<ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';NetBSD;'))">
177184
<OfficialBuildRID Include="netbsd-x64" />
178185
</ItemGroup>
179-
<ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';SunOS;'))">
180-
<OfficialBuildRID Include="sunos-x64" />
186+
<ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';illumos;'))">
187+
<OfficialBuildRID Include="illumos-x64" />
188+
</ItemGroup>
189+
<ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';Solaris;'))">
190+
<OfficialBuildRID Include="solaris-x64" />
181191
</ItemGroup>
182192
<ItemGroup Condition="$(SupportedPackageOSGroups.Contains(';Windows_NT;'))">
183193
<OfficialBuildRID Include="win-x86">

src/coreclr/src/.nuget/Microsoft.NET.Sdk.IL/targets/Microsoft.NET.Sdk.IL.targets

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ Copyright (c) .NET Foundation. All rights reserved.
2525
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('osx'))">osx</_OSPlatform>
2626
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('freebsd'))">freebsd</_OSPlatform>
2727
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('netbsd'))">netbsd</_OSPlatform>
28-
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('sunos'))">sunos</_OSPlatform>
28+
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('illumos'))">illumos</_OSPlatform>
29+
<_OSPlatform Condition="$([MSBuild]::IsOSPlatform('solaris'))">solaris</_OSPlatform>
2930
<_OSArchitecture>$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture)</_OSArchitecture>
3031

3132
<MicrosoftNetCoreIlasmPackageRuntimeId Condition="'$(MicrosoftNetCoreIlasmPackageRuntimeId)' == ''">$(_OSPlatform)-$(_OSArchitecture.ToLower())</MicrosoftNetCoreIlasmPackageRuntimeId>

0 commit comments

Comments
 (0)