dotnet / dotnet/source-build

Make Source-Build Portable Build Compatible

Open
#4,418 4 comments 0 reactions 0 assignees View on GitHub
area-upstream-fix
Dominant language
No language data
Stars
287
Forks
145
Avg merge
1d 22h
Merged PRs (30d)
10

Description

Based on https://github.com/dotnet/sdk/pull/40843, it's clear that while the VMR is configured to be portable, source build does not work in a portable state due to bugs.

For example, while certain OSs build successfully with PortableBuild=true (centos9 for example), the produced SDK does not work. An example is the following run of the scenario tests with a source-build SDK that was built using the PortableBuild=true property:

```
System.InvalidOperationException : Failed to execute /vmr/artifacts/obj/extracted-dotnet-sdk/dotnet new console --name SdkTemplateTestsComplex_Console_CSharp --output /vmr/artifacts/scenario-tests/artifacts/SdkTemplateTestsComplex_Console_CSharp --language "C#"
Exit code: 145
9.0.100-preview.5.24266.1 [/vmr/artifacts/obj/extracted-dotnet-sdk/sdk]
The command could not be loaded, possibly because:
* You intended to execute a .NET application:
The application 'new' does not exist.
* You intended to execute a .NET SDK command:
A compatible .NET SDK was not found.
```

Another example of source-build being portable build incompatible is the fact that aspnetcore fails to build on alpine:

```
/vmr/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj : error NU1100: Unable to resolve 'Microsoft.NETCore.App.Crossgen2.linux-x64 (>= 9.0.0-preview.5.24262.2)' for 'net9.0'. PackageSourceMapping is enabled, the following source(s) were not considered: prebuilt, previously-source-built, reference-packages, source-built-command-line-api, source-built-emsdk, source-built-msbuild, source-built-nuget-client, source-built-roslyn, source-built-roslyn-analyzers, source-built-runtime, source-built-source-build-externals, source-built-symreader, source-built-transport-arcade, source-built-transport-cecil, source-built-transport-emsdk, source-built-transport-msbuild, source-built-transport-roslyn, source-built-transport-runtime, source-built-transport-xdt. [/vmr/.dotnet/sdk/9.0.100-preview.5.24257.1/NuGet.targets]
```

In the above error message, aspnetcore fails to build because it is looking for the linux-x64 version of crossgen. Earlier, this package was built and outputted as `Microsoft.NETCore.App.Crossgen2.linux-musl-x64`. See https://github.com/dotnet/sdk/pull/40843#issuecomment-2125740662

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.