Closed
Description
Description
.NET 7 in source-build does not currently use NativeAOT. Thus, when building Crossgen2 from source on platforms without apphost in nuget feeds, build of runtime fails with:
/var/build/dotnet7/testing/dotnet7-stage0/src/bootstrap/sdk/7.0.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(135,5): error NETSDK1084: There is no application host available for the specified RuntimeIdentifier 'linux-musl-x86'. [/var/build/dotnet7/testing/dotnet7-stage0/src/dotnet-e6dd91c290b808f971a1ac69c2fb29395bbf1051/src/runtime/src/coreclr/tools/aot/crossgen2/crossgen2.csproj]
Reproduction Steps
Crossbuild from x64
to x86
, crossgen2 build will fail.
Expected behavior
Crossgen2 should be able to use to live apphost built previously by runtime
Actual behavior
Build fails due to no apphost for that RID
Regression?
Per #7335 and #66866, there was a time when this was a non-issue. With move to NativeAOT, UseLiveBuiltDotNetHost
was dropped, and this use-case seems to have been removed.
Known Workarounds
None for now. I attempted to build runtime in two steps, to no avail:
ROOTFS_DIR="$CBUILDROOT" ./build.sh $args -subset Clr.Native+Host.Native
ROOTFS_DIR="$CBUILDROOT" ./build.sh $args /p:AppHostSourcePath="$builddir"/src/runtime/artifacts/obj/linux-musl-$_dotnet_target.Release/apphost/standalone/apphost
Configuration
.NET 7.0.100-rtm.22519.39
Alpine Linux Edge
x64 to x86 crossbuild
Other information
No response