.NET binary builds for Haiku.
At the time of writing, this repo currently builds .NET 8, .NET 9, or early alpha versions of .NET 10.
- dotnet/runtime: .NET Runtime, ported to Haiku.
- dotnet/sdk: .NET SDK, ported to Haiku.
- dotnet/msbuild: MSBuild, configured to recognize Haiku.
Other components, notably ASP.NET and NativeAOT are not supported yet.
- Install dependencies:
pkgman install -y gmp krb5 libiconv llvm12_libunwind mpfr
pkgman install -y jq # Required for the dotnet-install script.
- Run the dotnet-install.sh script:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/trungnt2910/dotnet-builds/HEAD/dotnet-install.sh)" -- --install-dir /path/to/where/you/want/to/install/dotnet
- Add the .NET installation folder to the system's
$PATH
. - Add a custom NuGet source containing essential Haiku-specific packages.
your_github_token
should be a personal access token with at least theread:packages
permission:
dotnet nuget add source --username your_github_username --password your_github_token --store-password-in-clear-text --name dotnet_haiku_nuget "https://nuget.pkg.github.com/trungnt2910/index.json"
- Now you can carry out the basic steps to create a "Hello, World!" application:
mkdir helloworld
cd helloworld
dotnet new console
dotnet run
This repository will be built:
- At the start of every week to keep track of Haiku updates.
- Whenever the default branch (currently
haiku-dotnet8
) of any of the repositories mentioned above is pushed. - Whenever the default branch (
master
) of this repository is pushed. - Whenever @trungnt2910 wants to create a new release.
For some weird reasons, GitHub NuGet feeds require authentication, even for public packages.
The packages involved cannot be published on nuget.org because their names start with Microsoft.
, and that prefix is reserved. If there are any better free NuGet package hosting options, please let me know by opening an issue.
This is not a malicious attempt to expose your GitHub token, but a technical limitation by .NET:
error: Password encryption is not supported on .NET Core for this platform. The following feed try to use an encrypted password: 'dotnet_haiku_nuget'. You can use a clear text password as a workaround.
error: Encryption is not supported on non-Windows platforms.
Not in the near future, because:
- The current branch is using a prerelease version of .NET 8.
- Many PRs are waiting to get merged upstream.
- No official documentation (at least, not among the ones I know) on how to create packages that have themselves as a build prerequisite.
- Unconventional installation layout. All of .NET lives in one directory, and it should be writable so that additional workloads or other optional components can be installed through NuGet, instead of being divided into
/bin
,/lib
, etc. like other UNIX applications.
More discussion can be found in this forum comment and the following ones.
.NET binary releases and artifacts belong to the .NET Foundation and Contributors, and are covered by the MIT License.
Scripts and documentation in this repository (C) 2023 Trung Nguyen. All rights reserved.