2023-08-11 12:08:09 +03:00
|
|
|
from typing import List, Optional, Set
|
2020-01-03 02:37:10 +03:00
|
|
|
|
|
|
|
class ChannelMap():
|
|
|
|
channel_map = {
|
2022-08-31 01:12:50 +03:00
|
|
|
'main': {
|
2022-11-04 02:14:03 +03:00
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'8.0': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2023-07-25 10:30:38 +03:00
|
|
|
'release/8.0-rc2': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-rc2',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-rc1': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-rc1',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2023-03-24 23:50:10 +03:00
|
|
|
'8.0-preview': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0',
|
|
|
|
'qualtiy': 'preview'
|
|
|
|
},
|
|
|
|
'release/8.0-preview7': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview7',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-preview6': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview6',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-preview5': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview5',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2023-02-10 02:54:04 +03:00
|
|
|
'release/8.0-preview4': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview4',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-preview3': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview3',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-preview2': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview2',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/8.0-preview1': {
|
|
|
|
'tfm': 'net8.0',
|
|
|
|
'branch': '8.0-preview1',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-11-04 02:14:03 +03:00
|
|
|
'nativeaot8.0': {
|
|
|
|
'tfm': 'nativeaot8.0',
|
|
|
|
'branch': '8.0',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'7.0': {
|
2022-03-14 20:07:51 +03:00
|
|
|
'tfm': 'net7.0',
|
2022-11-05 11:05:40 +03:00
|
|
|
'branch': '7.0',
|
2022-03-14 20:07:51 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-10-24 19:36:27 +03:00
|
|
|
'release/7.0-rc2': {
|
2022-09-02 20:24:31 +03:00
|
|
|
'tfm': 'net7.0',
|
2022-10-24 19:36:27 +03:00
|
|
|
'branch': '7.0-rc2',
|
2022-09-02 20:24:31 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-10-24 19:36:27 +03:00
|
|
|
'release/7.0-rc1': {
|
Fix build for `runtime/7.0-rc2` branch by adding the (#2613)
.. missing 7.0-rc2 channel.
Fails with:
```
ci_setup.py: error: argument --channel: invalid choice: 'release/7.0-rc2' (choose from 'main', 'release/7.0-rc1', 'release/7.0', 'release/6.0', '6.0', 'nativeaot7.0', 'master', 'nativeaot6.0', '5.0', 'release/5.0.1xx-rc2', 'release/5.0.1xx', 'release/3.1.3xx', 'release/3.1.2xx', 'release/3.1.1xx', '3.1', '3.0', 'release/2.1.6xx', '2.1', 'LTS', 'net48')
```
2022-09-21 05:48:44 +03:00
|
|
|
'tfm': 'net7.0',
|
2022-10-24 19:36:27 +03:00
|
|
|
'branch': '7.0-rc1',
|
Fix build for `runtime/7.0-rc2` branch by adding the (#2613)
.. missing 7.0-rc2 channel.
Fails with:
```
ci_setup.py: error: argument --channel: invalid choice: 'release/7.0-rc2' (choose from 'main', 'release/7.0-rc1', 'release/7.0', 'release/6.0', '6.0', 'nativeaot7.0', 'master', 'nativeaot6.0', '5.0', 'release/5.0.1xx-rc2', 'release/5.0.1xx', 'release/3.1.3xx', 'release/3.1.2xx', 'release/3.1.1xx', '3.1', '3.0', 'release/2.1.6xx', '2.1', 'LTS', 'net48')
```
2022-09-21 05:48:44 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-03-30 10:59:31 +03:00
|
|
|
'nativeaot7.0': {
|
|
|
|
'tfm': 'nativeaot7.0',
|
|
|
|
'branch': '7.0.1xx',
|
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-11-04 02:14:03 +03:00
|
|
|
'release/7.0': {
|
|
|
|
'tfm': 'net7.0',
|
|
|
|
'branch': '7.0',
|
|
|
|
'quality': 'daily'
|
2020-01-03 02:37:10 +03:00
|
|
|
},
|
2022-10-24 19:36:27 +03:00
|
|
|
'6.0': {
|
|
|
|
'tfm': 'net6.0',
|
2022-11-11 21:25:40 +03:00
|
|
|
'branch': '6.0',
|
2022-10-24 19:36:27 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
|
|
|
'release/6.0': {
|
|
|
|
'tfm': 'net6.0',
|
2022-11-11 21:25:40 +03:00
|
|
|
'branch': '6.0',
|
2022-10-24 19:36:27 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2022-03-30 10:59:31 +03:00
|
|
|
'nativeaot6.0': {
|
|
|
|
'tfm': 'nativeaot6.0',
|
2022-11-11 21:25:40 +03:00
|
|
|
'branch': '6.0',
|
2022-03-30 10:59:31 +03:00
|
|
|
'quality': 'daily'
|
|
|
|
},
|
2020-05-15 20:01:37 +03:00
|
|
|
'release/3.1.3xx':{
|
|
|
|
'tfm': 'netcoreapp3.1',
|
|
|
|
'branch': 'release/3.1.3xx'
|
|
|
|
},
|
2020-01-03 02:37:10 +03:00
|
|
|
'release/3.1.2xx': {
|
|
|
|
'tfm': 'netcoreapp3.1',
|
|
|
|
'branch': 'release/3.1.2xx'
|
|
|
|
},
|
|
|
|
'release/3.1.1xx': {
|
|
|
|
'tfm': 'netcoreapp3.1',
|
|
|
|
'branch': 'release/3.1.1xx'
|
|
|
|
},
|
|
|
|
'3.1': {
|
|
|
|
'tfm': 'netcoreapp3.1',
|
2022-02-04 16:05:26 +03:00
|
|
|
'branch': '3.1.4xx',
|
|
|
|
'quality': 'daily'
|
2020-01-03 02:37:10 +03:00
|
|
|
},
|
Use net8.0 sdk for net462 builds (#2935)
This fixes a build error where the UpdateXlf task from the helix SDK needed System.Runtime from net8.0.
```
[2023/03/20 12:13:23][INFO] $ dotnet build C:\h\w\B12E0989\p\src\benchmarks\micro\MicroBenchmarks.csproj --configuration Release --framework net462 --no-restore /p:NuGetPackageRoot=C:\h\w\B12E0989\p\artifacts\packages /p:RestorePackagesPath=C:\h\w\B12E0989\p\artifacts\packages /p:UseSharedCompilation=false /p:BuildInParallel=false /m:1
[2023/03/20 12:13:23][INFO] MSBuild version 17.3.2+561848881 for .NET
[2023/03/20 12:13:25][INFO] C:\h\w\B12E0989\p\artifacts\packages\microsoft.dotnet.xlifftasks\1.0.0-beta.23160.1\build\Microsoft.DotNet.XliffTasks.targets(84,5): error MSB4062: The "UpdateXlf" task could not be loaded from the assembly C:\h\w\B12E0989\p\artifacts\packages\microsoft.dotnet.xlifftasks\1.0.0-beta.23160.1\build\..\tools\net8.0\Microsoft.DotNet.XliffTasks.dll. Could not load file or assembly 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [C:\h\w\B12E0989\p\src\harness\BenchmarkDotNet.Extensions\BenchmarkDotNet.Extensions.csproj]
[2023/03/20 12:13:27][INFO] C:\h\w\B12E0989\p\artifacts\packages\microsoft.dotnet.xlifftasks\1.0.0-beta.23160.1\build\Microsoft.DotNet.XliffTasks.targets(84,5): error MSB4062: The "UpdateXlf" task could not be loaded from the assembly C:\h\w\B12E0989\p\artifacts\packages\microsoft.dotnet.xlifftasks\1.0.0-beta.23160.1\build\..\tools\net8.0\Microsoft.DotNet.XliffTasks.dll. Could not load file or assembly 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [C:\h\w\B12E0989\p\src\tools\Reporting\Reporting\Reporting.csproj]
```
2023-03-21 20:18:41 +03:00
|
|
|
'net462': {
|
|
|
|
'tfm': 'net462',
|
|
|
|
'branch': '8.0'
|
2021-11-18 03:48:26 +03:00
|
|
|
},
|
|
|
|
'net48': {
|
|
|
|
'tfm': 'net48', # For Full Framework download the LTS for dotnet cli.
|
|
|
|
'branch': 'LTS'
|
2022-11-11 21:25:40 +03:00
|
|
|
},
|
|
|
|
'master': {
|
|
|
|
'tfm': 'net6.0',
|
|
|
|
'branch': 'master'
|
2020-01-03 02:37:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
@staticmethod
|
2023-08-11 12:08:09 +03:00
|
|
|
def get_supported_channels() -> List[str]:
|
2020-01-03 02:37:10 +03:00
|
|
|
'''List of supported channels.'''
|
|
|
|
return list(ChannelMap.channel_map.keys())
|
|
|
|
|
|
|
|
@staticmethod
|
2023-08-11 12:08:09 +03:00
|
|
|
def get_supported_frameworks() -> Set[str]:
|
2020-01-03 02:37:10 +03:00
|
|
|
'''List of supported frameworks'''
|
|
|
|
frameworks = [ChannelMap.channel_map[channel]['tfm'] for channel in ChannelMap.channel_map]
|
|
|
|
return set(frameworks)
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get_branch(channel: str) -> str:
|
|
|
|
if channel in ChannelMap.channel_map:
|
|
|
|
return ChannelMap.channel_map[channel]['branch']
|
|
|
|
else:
|
|
|
|
raise Exception('Channel %s is not supported. Supported channels %s' % (channel, ChannelMap.get_supported_channels()))
|
|
|
|
|
|
|
|
@staticmethod
|
2023-08-11 12:08:09 +03:00
|
|
|
def get_target_framework_monikers(channels: List[str]) -> List[str]:
|
2020-01-03 02:37:10 +03:00
|
|
|
'''
|
|
|
|
Translates channel names to Target Framework Monikers (TFMs).
|
|
|
|
'''
|
|
|
|
monikers = [
|
|
|
|
ChannelMap.get_target_framework_moniker(channel)
|
|
|
|
for channel in channels
|
|
|
|
]
|
|
|
|
return list(set(monikers))
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get_target_framework_moniker(channel: str) -> str:
|
|
|
|
'''
|
|
|
|
Translate channel name to Target Framework Moniker (TFM)
|
|
|
|
'''
|
|
|
|
if channel in ChannelMap.channel_map:
|
|
|
|
return ChannelMap.channel_map[channel]['tfm']
|
|
|
|
else:
|
|
|
|
raise Exception('Channel %s is not supported. Supported channels %s' % (channel, ChannelMap.get_supported_channels()))
|
|
|
|
|
2021-06-16 20:13:58 +03:00
|
|
|
@staticmethod
|
2023-08-11 12:08:09 +03:00
|
|
|
def get_quality_from_channel(channel: str) -> Optional[str]:
|
2021-06-16 20:13:58 +03:00
|
|
|
'''Translate Target Framework Moniker (TFM) to channel name'''
|
|
|
|
if 'quality' in ChannelMap.channel_map[channel]:
|
|
|
|
return ChannelMap.channel_map[channel]['quality']
|
|
|
|
else:
|
|
|
|
return None
|
|
|
|
|
2020-01-03 02:37:10 +03:00
|
|
|
@staticmethod
|
|
|
|
def get_channel_from_target_framework_moniker(target_framework_moniker: str) -> str:
|
|
|
|
'''Translate Target Framework Moniker (TFM) to channel name'''
|
|
|
|
for channel in ChannelMap.channel_map:
|
|
|
|
if ChannelMap.channel_map[channel]['tfm'] == target_framework_moniker:
|
|
|
|
return channel
|
|
|
|
raise Exception('Framework %s is not supported. Supported frameworks: %s' % (target_framework_moniker, ChannelMap.get_supported_frameworks()))
|