dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.26k stars 4.73k forks source link

Missing workloads on Linux #85505

Open ChristophSchmidpeter opened 1 year ago

ChristophSchmidpeter commented 1 year ago

Description

On Linux, there seem to be particular workloads missing. Running dotnet workload search there (tested on Arch Linux) only returns:

Workload ID                Description                                         
-------------------------------------------------------------------------------
android                    .NET SDK Workload for building Android applications.
macos                      .NET SDK Workload for building macOS applications.  
maui-android               .NET MAUI SDK for Android                           
maui-tizen                 .NET MAUI SDK for Tizen                             
maui-windows               .NET MAUI SDK for Windows                           
runtimes-windows           workloads/runtimes-windows/description              
runtimes-windows-net6      workloads/runtimes-windows-net6/description         
wasm-experimental          workloads/wasm-experimental/description             
wasm-tools                 .NET WebAssembly build tools                        
wasm-tools-net6            .NET WebAssembly build tools

In contrast, however, dotnet workload search e.g. on Windows returns:

Workload ID                Description
-----------------------------------------------------------------------------------
android                    .NET SDK Workload for building Android applications.    
ios                        .NET SDK Workload for building iOS applications.        
maccatalyst                .NET SDK Workload for building MacCatalyst applications.
macos                      .NET SDK Workload for building macOS applications.      
maui                       .NET MAUI SDK for all platforms
maui-android               .NET MAUI SDK for Android
maui-desktop               .NET MAUI SDK for Desktop
maui-ios                   .NET MAUI SDK for iOS
maui-maccatalyst           .NET MAUI SDK for Mac Catalyst
maui-mobile                .NET MAUI SDK for Mobile
maui-tizen                 .NET MAUI SDK for Tizen
maui-windows               .NET MAUI SDK for Windows
runtimes-windows           workloads/runtimes-windows/description
runtimes-windows-net6      workloads/runtimes-windows-net6/description
tvos                       .NET SDK Workload for building tvOS applications.       
wasm-experimental          workloads/wasm-experimental/description
wasm-tools                 .NET WebAssembly build tools
wasm-tools-net6            .NET WebAssembly build tools

This causes projects relying on the missing workloads fail to build on Linux (e.g. net-7.0-ios missing for Fabulois.Avalonia).

Are the missing workloads supposed to be available on Linux? If not, are they not made available for technical / effort reasons, and are they are planned to be included for future .NET releases?

Reproduction Steps

See above.

Expected behavior

Missing workloads are available on Linux too.

Actual behavior

Workloads are missing.

Regression?

No response

Known Workarounds

No response

Configuration

dotnet: 7.0.103 (via packages: community/{dotnet-sdk,dotnet-runtime,dotnet-targeting-pack,dotnet-runtime} 7.0.3.sdk103-1) OS: Arch Linux

Other information

No response

radical commented 1 year ago

cc @steveisok

steveisok commented 1 year ago

@ChristophSchmidpeter I can only speak for the ios / tvos / maccatalyst ones. The reason why they don't appear on linux is by design as they all require osx / xcode to build. The reason why it's available on windows is that we have some proxying magic that communicates with an osx machine to do the real work.

@rolfbjarne do you know why the macos workload shows up? That doesn't make sense.

rolfbjarne commented 1 year ago

@rolfbjarne do you know why the macos workload shows up? That doesn't make sense.

I have no idea, we don't do anything differently for the macos workload :/

spouliot commented 7 months ago

The reason why they don't appear on linux is by design as they all require osx / xcode to build.

@steveisok that sounds logical but linux already has a macos workload, even if it has the same requirements ;-)

The reason why it's available on windows is that we have some proxying magic that communicates with an osx machine to do the real work.

AFAIK that proxying magic is only for iOS (not tvOS) nor Mac Catalyst.

So I'm pretty sure Windows got all the workloads just because it makes it easier to load projects with multiple target frameworks.

It would make it a lot easier to develop for/from Linux if those (subset?) workloads where made available :)