Repository navigation
Tracking issue for illumos and Solaris x86-64 port work #34944
Description
Cut from #4173.
Given below is a high-level list of work items for Solaris x86-64 port:
-
Native configurations (Add native configurations for SunOS #34756)
-
CoreCLR native components (Port CoreCLR to SunOS #35173)
awaiting next release of libunwind https://github.com/libunwind/libunwind/releases/tag/v1.5-rc1 or higher with changes from Illumos fixes libunwind/libunwind#171, for Solaris support.- upstream PR was merged, libunwind is updated to 1.5 by @sdmaclea in Libunwind1.5rc2 #36027.
-
PAL tests
- one test is failing is due to paltest_pal_sxs_test1 failed on SmartOS x64 #35362.
- another one is related to raising thread priority, after lowering it from the same value as a non-root user. this either requires implementation using
priocntl(2)directly for SunOS targets, or wait for https://www.illumos.org/issues/4963.
-
Libraries native components (Port Native libraries to SunOS #34867)
- on SmartOS x86_64 with gcc 7x:
# from runtime repo root ./src/libraries/Native/build-native.sh -gcc
- on SmartOS x86_64 with gcc 7x:
-
Mono native components (Enable mono cross-build on SunOS-like OS #37560)
- Full mono (https://github.com/mono/mono) is already available on Solaris, requires some configurations for netcore mono in this repository.
-
Installer native components (Define dirent d_type for Solaris based OS #34263)
- on SmartOS x86_64 with gcc 7x:
# from runtime repo root src/installer/corehost/build.sh -commithash $(git rev-parse HEAD) -gcc \ -apphostver 5.0.0-dev -hostver 5.0.0-dev -fxrver 5.0.0-dev -policyver 5.0.0-dev
- on SmartOS x86_64 with gcc 7x:
-
MSBuild configurations
-
CoreCLR managed components (Add configurations for SunOS CoreCLR managed build #36266)
-
Libraries managed components
- Most of the partial classes can be shared with Linux (e.g. by moving it under Unix names) and modifying msbuild configurations.
-
Installer managed components
-
CoreCLR tests (Fix CoreCLR test build for SunOS #37824)
-
Libraries tests
-
Mono tests
-
Installer tests
-
Packaging configurations
-
RID (Implement RID for SunOS-derived operating systems #37016)
-
Cross compilation on Linux (Add illumos setup to build-rootfs.sh arcade#5584, Add an image to build runtime on illumos dotnet-buildtools-prereqs-docker#324, Add support for illumos cross-compilation #37753)
- as done for other operating systems, e.g. FreeBSD: https://github.com/dotnet/arcade/blob/3443768/eng/common/cross/build-rootfs.sh#L243.
- script gets mirrored at https://github.com/dotnet/runtime/blob/master/eng/common/cross/build-rootfs.sh.
-
CI hook
- similar to add images to build runtime on FreeBSD dotnet-buildtools-prereqs-docker#277 and add FreeBSD build #34521
- external (GitHub Actions) CI has set up using the official illumos docker image: https://github.com/am11/runtime/blob/feature/sunos/ci/.github/workflows/main.yml
- example run: https://github.com/am11/runtime/actions/runs/145127885
- on tag push, it creates a GitHub release and upload artifacts (files under
Shippingdirectory), e..g. https://github.com/am11/runtime/releases/tag/5.0.0-dev.1
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsFuture
Activity
am11 commentedon Apr 14, 2020
CoreCLR native componentsis WIP with branch from libunwind that has all Solaris patches. If someone wants to pick up other items, feel free. :)Fix two issues with hosting on SunOS (#36527)
[Automated PR] master -> dev/infrastucture (#37086)
[-]Tracking issue for Solaris x86-64 port work[/-][+]Tracking issue for illumos and Solaris x86-64 port work[/+]123 remaining items
am11 commentedon Jul 14, 2025
Your test program could use another case of spawning the process:
gwr commentedon Jul 14, 2025
Thanks. I added that. On both Linux and illumos the output looks like:
However, occasionally, it seems the "echo" command exits before the parent has a chance to get information about it, and then the program fails like this:
I'm not sure if that's expected or not. Apparently it is, as I can make it happen on Linux too:
am11 commentedon Jul 14, 2025
Was it with the updated code or the original version? I added sleep 2 to prevent it from exiting early.
gwr commentedon Jul 14, 2025
Yeah, I tried the same, where I used /tmp/echo instead containing:
I improved that test case a little and pushed a fix to the gist:
https://gist.github.com/gwr/110a3d1b031c58e82cbda95c3cbbbcec
Sorry, didn't see your update until after I came up with that.
I think it's fine either way.
Thanks.
gwr commentedon Jan 19, 2026
These two are merged now.
Toasterson commentedon Jan 19, 2026
Is there a guide how to bootstrap a build for a package?
gwr commentedon Jan 19, 2026
That will not be convenient until self-hosted builds are working.
ris-work commentedon Jan 27, 2026
Thank you for this! Does dotnet 10 build on Illumos? I do use the FreeBSD port actively and it works well for a lot of non-trivial work; I too am interested in the status of Illumos builds.
am11 commentedon Jan 27, 2026
It is still unusable for general purpose as long as shared framework port is incomplete.
gwr commentedon Feb 17, 2026
Is there any sort of forum where I can ask questions about things I run into while porting building and testing? I have FilesSystemWatcher and NetSecurity stuff ready to test, but building it all sometimes runs into what looks like #92951 (which is closed so I can't ask there). Thanks.
am11 commentedon Feb 17, 2026
There is a discord link in the root readme.
Cross build issues are unrelated to port work. Haven't seen this one recently but you can either just ignore it or open an issue with surrounding build logs (it's usually the next line which shows why msbuild choked).
gwr commentedon Feb 18, 2026
My dotnet build still works well enough to run "hello world"
I built the tests like this:
and I have test DLLs etc under:
artifacts/bin/System.IO.FileSystem.Watcher.Tests/Debug/net11.0-unix
and
artifacts/bin/System.Net.Security.Unit.Tests/Debug/net11.0-unix
The tests give me no output when I try to run them, eg.
Any suggestions how to figure this out?
Thanks.
am11 commentedon Feb 18, 2026
You can pass
-p:ArchiveTests=trueto generate self-contained, ready-to-run test archives. Each archive is created underartifacts/helixas a.zipfile and includes aRunTests.shscript for execution.You can build single test assembly archive with:
$ dotnet build -c Release src/libraries/System.IO.FileSystem.Watcher/tests \ -p:ArchiveTests=true -p:TargetOS=illumos -p:CrossBuild=truethen cp/scp the single zip file to target machine, unzip -> RunTests.sh
gwr commentedon Feb 25, 2026
Thanks for the help. I have FilesSystemWatcher and NetSecurity working, and have put up some PRs to start getting the work (and prerequisites) staged in:
#124716
gwr commentedon Mar 2, 2026
In case anyone else wants to test what I'm building, here's the current stack of commits that I "git cherry-pick" in sequence onto a working branch to build and test:
All are branchs in https://github.com/gwr/dotnet-runtime
Not all have pull requests yet. I'm working on that.