[dotnet] Generate the WorkloadManifest.json files and add .net6/.net7 variants in there.

This way a workload restore will get the .NET 7 runtime packs.
This commit is contained in:
Rolf Bjarne Kvinge 2022-07-14 21:11:37 +02:00 коммит произвёл vs-mobiletools-engineering-service2
Родитель ba64775ba7
Коммит 61823e4182
6 изменённых файлов: 140 добавлений и 199 удалений

Просмотреть файл

@ -153,15 +153,9 @@ endef
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call SupportedTargetPlatforms,$(platform))))
define WorkloadTargets
Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json: targets/WorkloadManifest.$(1).template.json Makefile $(TOP)/Make.config.inc $(TOP)/.git/HEAD $(TOP)/.git/index Makefile
Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json: Makefile $(TOP)/Make.config.inc $(TOP)/.git/HEAD $(TOP)/.git/index Makefile generate-workloadmanifest-json.csharp
$$(Q) rm -f $$@.tmp
$$(Q_GEN) sed \
-e "s/@VERSION@/$3/g" \
-e "s/@NET6_VERSION@/$(4)/g" \
-e "s/@BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION@/$(BUNDLED_NETCORE_PLATFORMS_PACKAGE_VERSION)/g" \
-e "s/@PLATFORM_LOWERCASE@/$2/g" \
-e "s/@PLATFORM@/$1/g" \
$$< > $$@.tmp
$$(Q_GEN) ./generate-workloadmanifest-json.csharp "$(1)" "$(3)" "$(4)" "$$(DOTNET_$(5)_RUNTIME_IDENTIFIERS)" "$$@.tmp" "$$(DOTNET_WINDOWS_PLATFORMS)"
$$(Q) mv $$@.tmp $$@
Workloads/Microsoft.NET.Sdk.$(1)/LICENSE: $(TOP)/LICENSE
@ -173,7 +167,7 @@ WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/LICENSE
LOCAL_WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/WorkloadManifest.json
LOCAL_WORKLOAD_TARGETS += Workloads/Microsoft.NET.Sdk.$(1)/LICENSE
endef
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call WorkloadTargets,$(platform),$(shell echo $(platform) | tr A-Z a-z),$($(platform)_NUGET_VERSION_NO_METADATA),$(NET6_$(platform)_NUGET_VERSION_NO_METADATA))))
$(foreach platform,$(DOTNET_PLATFORMS),$(eval $(call WorkloadTargets,$(platform),$(shell echo $(platform) | tr A-Z a-z),$($(platform)_NUGET_VERSION_NO_METADATA),$(NET6_$(platform)_NUGET_VERSION_NO_METADATA),$(shell echo $(platform) | tr a-z A-Z))))
$(DOTNET_NUPKG_DIR)/vs-workload.props: Workloads/vs-workload.template.props
$(Q) rm -f $@.tmp

Просмотреть файл

@ -0,0 +1,137 @@
#!/usr/bin/env /Library/Frameworks/Mono.framework/Commands/csharp
// arguments are: <platform> <outputPath>
using System.IO;
using System.Xml;
var args = Environment.GetCommandLineArgs ();
var expectedArgumentCount = 6;
if (args.Length != expectedArgumentCount + 2 /* 2 default arguments (executable + script) + 'expectedArgumentCount' arguments we're interested in */) {
// first arg is "/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/4.5/csharp.exe"
// second arg the script itself
// then comes the ones we care about
Console.WriteLine ($"Need {expectedArgumentCount} arguments, got {args.Length - 2}");
Environment.Exit (1);
return;
}
var argumentIndex = 2;
var platform = args [argumentIndex++];
var version = args [argumentIndex++];
var net6Version = args [argumentIndex++];
var runtimeIdentifiers = args [argumentIndex++].Split (' ');
var outputPath = args [argumentIndex++];
var windowsPlatforms = args [argumentIndex++].Split (' ');
var hasWindows = Array.IndexOf (windowsPlatforms, platform) >= 0;
var platformLowerCase = platform.ToLowerInvariant ();
using (TextWriter writer = new StreamWriter (outputPath)) {
writer.WriteLine ($"{{");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"workloads\": {{");
writer.WriteLine ($" \"{platformLowerCase}\": {{");
writer.WriteLine ($" \"description\": \".NET SDK Workload for building {platform} applications.\",");
writer.WriteLine ($" \"packs\": [");
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net7\",");
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net6\",");
if (hasWindows) {
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net7\",");
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net6\",");
}
writer.WriteLine ($" \"Microsoft.{platform}.Ref.net7\",");
writer.WriteLine ($" \"Microsoft.{platform}.Ref\",");
foreach (var rid in runtimeIdentifiers) {
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}.net7\",");
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\",");
}
writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\"");
writer.WriteLine ($" ],");
writer.WriteLine ($" \"extends\": [");
if (platform == "macOS") {
writer.WriteLine ($" \"microsoft-net-runtime-mono-tooling\",");
writer.WriteLine ($" \"microsoft-net-runtime-mono-tooling-net6\",");
} else {
writer.WriteLine ($" \"microsoft-net-runtime-{platformLowerCase}\",");
writer.WriteLine ($" \"microsoft-net-runtime-{platformLowerCase}-net6\",");
}
writer.WriteLine ($" ]");
writer.WriteLine ($" }},");
writer.WriteLine ($" }},");
writer.WriteLine ($" \"packs\": {{");
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net7\": {{");
writer.WriteLine ($" \"kind\": \"sdk\",");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Sdk\"");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net6\": {{");
writer.WriteLine ($" \"kind\": \"sdk\",");
writer.WriteLine ($" \"version\": \"{net6Version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Sdk\"");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
if (hasWindows) {
writer.WriteLine ($" \"Microsoft.@PLATFORM@.Windows.Sdk.Aliased.net7\": {{");
writer.WriteLine ($" \"kind\": \"sdk\",");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"win-x64\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" \"win-x86\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" \"win-arm64\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net6\": {{");
writer.WriteLine ($" \"kind\": \"sdk\",");
writer.WriteLine ($" \"version\": \"{net6Version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"win-x64\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" \"win-x86\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" \"win-arm64\": \"Microsoft.{platform}.Windows.Sdk\",");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
}
writer.WriteLine ($" // The ref and runtime packs use the .net6 version, because when we load the .net6 SDK pack, it says to use the ref and runtime pack versions from the workload (**FromWorkload**).");
writer.WriteLine ($" // This could be solvable with aliases as well, except that aliases doesn't work in this scenario (https://github.com/dotnet/sdk/issues/26384).");
writer.WriteLine ($" // For the .net7 packs, we're stating the exact version to use in the KnownFrameworkReference item, so whatever we specify here is ignored.");
writer.WriteLine ($" \"Microsoft.{platform}.Ref\": {{");
writer.WriteLine ($" \"kind\": \"framework\",");
writer.WriteLine ($" \"version\": \"{net6Version}\"");
writer.WriteLine ($" }},");
writer.WriteLine ($" \"Microsoft.{platform}.Ref.net7\": {{");
writer.WriteLine ($" \"kind\": \"framework\",");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Ref\",");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
foreach (var rid in runtimeIdentifiers) {
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\": {{");
writer.WriteLine ($" \"kind\": \"framework\",");
writer.WriteLine ($" \"version\": \"{net6Version}\"");
writer.WriteLine ($" }},");
}
foreach (var rid in runtimeIdentifiers) {
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}.net7\": {{");
writer.WriteLine ($" \"kind\": \"framework\",");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Runtime.{rid}\",");
writer.WriteLine ($" }}");
writer.WriteLine ($" }},");
}
writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\": {{");
writer.WriteLine ($" \"kind\": \"template\",");
writer.WriteLine ($" \"version\": \"{version}\",");
writer.WriteLine ($" \"alias-to\": {{");
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Templates\",");
writer.WriteLine ($" }}");
writer.WriteLine ($" }}");
writer.WriteLine ($" }}");
writer.WriteLine ($"}}");
}
Environment.Exit (0);

Просмотреть файл

@ -1,40 +0,0 @@
{
"version": "@VERSION@",
"workloads": {
"@PLATFORM_LOWERCASE@": {
"description": ".NET SDK Workload for building macOS applications with @PLATFORM@.",
"packs": [
"Microsoft.@PLATFORM@.Sdk",
"Microsoft.@PLATFORM@.Ref",
"Microsoft.@PLATFORM@.Runtime.maccatalyst-arm64",
"Microsoft.@PLATFORM@.Runtime.maccatalyst-x64",
"Microsoft.@PLATFORM@.Templates"
],
"extends": [
"microsoft-net-runtime-maccatalyst"
]
}
},
"packs": {
"Microsoft.@PLATFORM@.Sdk": {
"kind": "sdk",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Ref": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.maccatalyst-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.maccatalyst-x64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Templates": {
"kind": "template",
"version": "@VERSION@"
}
}
}

Просмотреть файл

@ -1,65 +0,0 @@
{
"version": "@VERSION@",
"workloads": {
"@PLATFORM_LOWERCASE@": {
"description": ".NET SDK Workload for building @PLATFORM@ applications.",
"packs": [
"Microsoft.@PLATFORM@.Sdk",
"Microsoft.@PLATFORM@.Windows.Sdk.Aliased",
"Microsoft.@PLATFORM@.Ref",
"Microsoft.@PLATFORM@.Runtime.ios-arm",
"Microsoft.@PLATFORM@.Runtime.ios-arm64",
"Microsoft.@PLATFORM@.Runtime.iossimulator-x86",
"Microsoft.@PLATFORM@.Runtime.iossimulator-x64",
"Microsoft.@PLATFORM@.Runtime.iossimulator-arm64",
"Microsoft.@PLATFORM@.Templates"
],
"extends": [
"microsoft-net-runtime-ios"
]
}
},
"packs": {
"Microsoft.@PLATFORM@.Sdk": {
"kind": "sdk",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Windows.Sdk.Aliased": {
"kind": "sdk",
"version": "@VERSION@",
"alias-to": {
"win-x64": "Microsoft.@PLATFORM@.Windows.Sdk",
"win-x86": "Microsoft.@PLATFORM@.Windows.Sdk",
"win-arm64": "Microsoft.@PLATFORM@.Windows.Sdk",
}
},
"Microsoft.@PLATFORM@.Ref": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.ios-arm": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.ios-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.iossimulator-x86": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.iossimulator-x64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.iossimulator-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Templates": {
"kind": "template",
"version": "@VERSION@"
}
}
}

Просмотреть файл

@ -1,40 +0,0 @@
{
"version": "@VERSION@",
"workloads": {
"@PLATFORM_LOWERCASE@": {
"description": ".NET SDK Workload for building @PLATFORM@ applications.",
"packs": [
"Microsoft.@PLATFORM@.Sdk",
"Microsoft.@PLATFORM@.Ref",
"Microsoft.@PLATFORM@.Runtime.osx-arm64",
"Microsoft.@PLATFORM@.Runtime.osx-x64",
"Microsoft.@PLATFORM@.Templates"
],
"extends": [
"microsoft-net-runtime-mono-tooling"
]
}
},
"packs": {
"Microsoft.@PLATFORM@.Sdk": {
"kind": "sdk",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Ref": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.osx-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.osx-x64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Templates": {
"kind": "template",
"version": "@VERSION@"
}
}
}

Просмотреть файл

@ -1,45 +0,0 @@
{
"version": "@VERSION@",
"workloads": {
"@PLATFORM_LOWERCASE@": {
"description": ".NET SDK Workload for building @PLATFORM@ applications.",
"packs": [
"Microsoft.@PLATFORM@.Sdk",
"Microsoft.@PLATFORM@.Ref",
"Microsoft.@PLATFORM@.Runtime.tvos-arm64",
"Microsoft.@PLATFORM@.Runtime.tvossimulator-x64",
"Microsoft.@PLATFORM@.Runtime.tvossimulator-arm64",
"Microsoft.@PLATFORM@.Templates"
],
"extends": [
"microsoft-net-runtime-tvos"
]
}
},
"packs": {
"Microsoft.@PLATFORM@.Sdk": {
"kind": "sdk",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Ref": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.tvos-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.tvossimulator-x64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Runtime.tvossimulator-arm64": {
"kind": "framework",
"version": "@VERSION@"
},
"Microsoft.@PLATFORM@.Templates": {
"kind": "template",
"version": "@VERSION@"
}
}
}