- 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 install
orpkg install
will get you up and running- to speed up port build, use
install_tools.sh
first, 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.sh
build_runtime.sh
- add-v d
inside if it will fail with SEHExceptions...build_aspnetcore.sh
build_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.sh
will create one archive with everything you should need on target systemclean.sh
if 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 dotnet
will do the trick - when building under jail,
mlock
is 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 libinotify
should be enough on another box, maybeopenssl
too - Under
14
alsopkg install misc/compat13x
might 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