From e5a1fe1b51b885d1415cf04ddbf031a35de4fef7 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Mon, 11 Jul 2022 16:57:50 -0400 Subject: [PATCH 1/2] InstallWorkloadFromArtifact: Support multiple workloads --- .../InstallWorkloadFromArtifacts.cs | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs index 08f933b2b6e01..6fa8be1845acc 100644 --- a/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs +++ b/src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs @@ -4,9 +4,9 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.IO; using System.Linq; -using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.Build.Framework; @@ -19,7 +19,7 @@ namespace Microsoft.Workload.Build.Tasks public class InstallWorkloadFromArtifacts : Task { [Required, NotNull] - public ITaskItem? WorkloadId { get; set; } + public ITaskItem[] WorkloadIds { get; set; } = Array.Empty(); [Required, NotNull] public string? VersionBand { get; set; } @@ -41,7 +41,12 @@ public override bool Execute() { try { - return ExecuteInternal(); + foreach (var workloadIdItem in WorkloadIds) + { + if (!ExecuteInternal(workloadIdItem)) + return false; + } + return true; } catch (LogAsErrorException laee) { @@ -50,10 +55,10 @@ public override bool Execute() } } - private bool ExecuteInternal() + private bool ExecuteInternal(ITaskItem workloadId) { - if (!HasMetadata(WorkloadId, nameof(WorkloadId), "Version") || - !HasMetadata(WorkloadId, nameof(WorkloadId), "ManifestName")) + if (!HasMetadata(workloadId, nameof(workloadId), "Version") || + !HasMetadata(workloadId, nameof(workloadId), "ManifestName")) { return false; } @@ -70,10 +75,10 @@ private bool ExecuteInternal() return false; } - Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Installing workload manifest {WorkloadId.ItemSpec} **{Environment.NewLine}"); + Log.LogMessage(MessageImportance.High, $"{Environment.NewLine}** Installing workload manifest {workloadId.ItemSpec} **{Environment.NewLine}"); string nugetConfigContents = GetNuGetConfig(); - if (!InstallWorkloadManifest(WorkloadId.GetMetadata("ManifestName"), WorkloadId.GetMetadata("Version"), nugetConfigContents, stopOnMissing: true)) + if (!InstallWorkloadManifest(workloadId, workloadId.GetMetadata("ManifestName"), workloadId.GetMetadata("Version"), nugetConfigContents, stopOnMissing: true)) return false; if (OnlyUpdateManifests) @@ -86,7 +91,7 @@ private bool ExecuteInternal() (int exitCode, string output) = Utils.TryRunProcess( Log, Path.Combine(SdkDir, "dotnet"), - $"workload install --skip-manifest-update --no-cache --configfile \"{nugetConfigPath}\" {WorkloadId.ItemSpec}", + $"workload install --skip-manifest-update --no-cache --configfile \"{nugetConfigPath}\" {workloadId.ItemSpec}", workingDir: Path.GetTempPath(), silent: false, debugMessageImportance: MessageImportance.High); @@ -115,7 +120,7 @@ private string GetNuGetConfig() return contents.Replace(s_nugetInsertionTag, $@""); } - private bool InstallWorkloadManifest(string name, string version, string nugetConfigContents, bool stopOnMissing) + private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string version, string nugetConfigContents, bool stopOnMissing) { Log.LogMessage(MessageImportance.High, $"Installing workload manifest for {name}/{version}"); @@ -168,9 +173,9 @@ private bool InstallWorkloadManifest(string name, string version, string nugetCo { foreach ((string depName, string depVersion) in manifest.DependsOn) { - if (!InstallWorkloadManifest(depName, depVersion, nugetConfigContents, stopOnMissing: false)) + if (!InstallWorkloadManifest(workloadId, depName, depVersion, nugetConfigContents, stopOnMissing: false)) { - Log.LogWarning($"Could not install manifest {depName}/{depVersion}. This can be ignored if the workload {WorkloadId.ItemSpec} doesn't depend on it."); + Log.LogWarning($"Could not install manifest {depName}/{depVersion}. This can be ignored if the workload {workloadId.ItemSpec} doesn't depend on it."); continue; } } @@ -201,7 +206,7 @@ private string FindSubDirIgnoringCase(string parentDir, string dirName) + $"{Environment.NewLine}Using the first one: {first}"); } - return first ?? Path.Combine(parentDir, dirName); + return first ?? Path.Combine(parentDir, dirName.ToLower(CultureInfo.InvariantCulture)); } private sealed record ManifestInformation( From 282c6ad5c14aeb4a99219bac7de77edf68933f7a Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Mon, 11 Jul 2022 16:58:40 -0400 Subject: [PATCH 2/2] [wasm] Move the templates pack to a new workload - wasm-experimental --- eng/testing/tests.wasm.targets | 4 ++++ eng/testing/workloads-testing.targets | 4 ++-- .../WorkloadManifest.json.in | 9 ++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/eng/testing/tests.wasm.targets b/eng/testing/tests.wasm.targets index 4c5310cb696f9..689378e4ab3a6 100644 --- a/eng/testing/tests.wasm.targets +++ b/eng/testing/tests.wasm.targets @@ -137,6 +137,10 @@ ManifestName="Microsoft.NET.Workload.Mono.ToolChain" Version="$(PackageVersion)" VersionBand="$(SdkBandVersion)" /> + diff --git a/eng/testing/workloads-testing.targets b/eng/testing/workloads-testing.targets index c0b07b9e9e42c..c4e9e5e0e6349 100644 --- a/eng/testing/workloads-testing.targets +++ b/eng/testing/workloads-testing.targets @@ -135,7 +135,7 @@