- TODO v10
- some steps I always forget how to bootstrap
- for cross build sdk, patch needed for runtime to output proper ilc - https://patch-diff.githubusercontent.com/raw/dotnet/runtime/pull/105004.patch
- also this one might be needed https://github.com/dotnet/runtime/pull/105587.patch
- if sdk will fail with missing runtime, extract freshly built runtime from artifacts into sdk/.dotnet dir
- aspnet runtime nuget with 6.0.32
- app host both runtime and aspnet with 6.0.32
- I use some old v6 versions and repack them with new version, scripts in repo, maybe there's better way for that
- eng/Versions.props, line 217 with MicrosoftDotNetILCompilerVersion, put 9.0.0-preview.7.24405.7 or the one you have with SDK
- add nuget source for SDK nuget's your compile with
- adjust global.json versions to SDK version
- for runtime, app host error could happen - this need sed linux-arch to freebsd-arc - ex.
sed -i '' -e 's/linux-arm64/freebsd-arm64/g' runtime/.dotnet/sdk/9.0.100-preview.7.24407.12/Microsoft.NETCoreSdk.BundledVersions.props - add
<NuGetAudit>false</NuGetAudit>intoaspnetcore/Directory.Build.props - remove dnc/internal nuget feeds might also help
- build runtime (ILC can/will fail due to missing symbols, copy from crossbuild, but final SDK/nuget will also be broken)
- build aspnet (do not build with node/npm installed)
- build sdk
- We how have community made port under FreeBSD ports for x64/amd64 and aarch64
/usr/ports/lang/dotnet/make installorpkg installwill get you up and running- to speed up port build, use
install_tools.shfirst, unless you like everything from source
- Just a collection of script and patches put up into one place, to help getting automated builds.
- For other versions, check proper tag with that name (mostly out-dated and not updated).
- For my private nuget feed, check dotnet-freebsd-nuget-feed
- Run as root
install_tools.sh- make sure to mount all needed things (add them to /etc/fstab, then mount -a) init.shbuild_runtime.sh- add-v dinside if it will fail with SEHExceptions...build_aspnetcore.shbuild_installer.sh- this one can fail with downloaing some things, copy URL and try to manualy fetch it intoinstaller/artifacts/obj/redist/Release/downloads/- Check
installer/artifacts/packages/Release/Shipping/or gather_output.shwill create one archive with everything you should need on target systemclean.shif you want to save disk space after use
- some steps can fail, some patches can fail to apply, mostly due to numbers, this needs to be handed by hand, as I don't update all the patches with every release
- sometime some step can fail, due to zombie dotnet processes left, simple
killall -9 dotnetwill do the trick - when building under jail,
mlockis required
- Working SDK for FreeBSD
- Tested under FreeBSD 13 and 14
- 8GB+ of RAM recommended (with 4GB I saw some parts crashing)
- To run SDK and/or apps
pkg install libunwind icu libinotifyshould be enough on another box, maybeopenssltoo - Under
14alsopkg install misc/compat13xmight be needed if using builds directly
- x64 - read
- arm64 - read
- nice summary from @Thefrank
- Check releases (issue me if someting's broken or missing)
- Crossbuild and native builds
- Azure pipeline