Skip to content

Commit 70e791a

Browse files
authored
Install workload manifests in sdk band version derived from the (#81457)
.. installer version. - This is only for running Wasm.Build.Tests Two new properties are added: - `SdkBandVersionForWorkload_ComputedFromInstaller`: this is based on the version derived from `dotnet --version`. `8.0.0-alpha.1.1234.1` becomes `8.0.0-alpha.1`, and is used as the path where the manifests get installed for testing: `sdk-manifests/$(SdkBandVersionForWorkload_ComputedFromInstaller)` - `SdkBandVersionForWorkload_FromRuntimeVersions`: this is the version band used for the packages generated. And simply rename of the earlier `$(SdkBandVersionForWorkload)`.
1 parent bf93d12 commit 70e791a

File tree

7 files changed

+58
-14
lines changed

7 files changed

+58
-14
lines changed

eng/Versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
1313
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
1414
<WorkloadVersionSuffix Condition="'$(PreReleaseVersionLabel)' != 'release'">-$(PreReleaseVersionLabel).$(PreReleaseVersionIteration)</WorkloadVersionSuffix>
15-
<SdkBandVersionForWorkload>$(SdkBandVersion)$(WorkloadVersionSuffix)</SdkBandVersionForWorkload>
15+
<SdkBandVersionForWorkload_FromRuntimeVersions>$(SdkBandVersion)$(WorkloadVersionSuffix)</SdkBandVersionForWorkload_FromRuntimeVersions>
1616
<!-- Set assembly version to align with major and minor version,
1717
as for the patches and revisions should be manually updated per assembly if it is serviced. -->
1818
<AssemblyVersion>$(MajorVersion).$(MinorVersion).0.0</AssemblyVersion>

eng/testing/tests.wasm.targets

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -341,20 +341,17 @@
341341
<WorkloadIdForTesting Include="wasm-tools;wasm-experimental"
342342
ManifestName="Microsoft.NET.Workload.Mono.ToolChain.Current"
343343
Variant="latest"
344-
Version="$(PackageVersionForWorkloadManifests)"
345-
VersionBand="$(SdkBandVersionForWorkload)" />
344+
Version="$(PackageVersionForWorkloadManifests)" />
346345

347346
<WorkloadIdForTesting Include="wasm-tools-net7;wasm-experimental-net7"
348347
ManifestName="Microsoft.NET.Workload.Mono.ToolChain.net7"
349348
Variant="net7"
350-
Version="$(PackageVersionForWorkloadManifests)"
351-
VersionBand="$(SdkBandVersionForWorkload)" />
349+
Version="$(PackageVersionForWorkloadManifests)" />
352350

353351
<WorkloadIdForTesting Include="wasm-tools-net6"
354352
ManifestName="Microsoft.NET.Workload.Mono.ToolChain.net6"
355353
Variant="net6"
356354
Version="$(PackageVersionForWorkloadManifests)"
357-
VersionBand="$(SdkBandVersionForWorkload)"
358355
IgnoreErrors="$(WasmIgnoreNet6WorkloadInstallErrors)" />
359356

360357
<WorkloadCombinationsToInstall Include="latest" Variants="latest" />

eng/testing/workloads-testing.targets

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
<_SdkWithNoWorkloadStampPath>$([MSBuild]::NormalizePath($(_SdkWithNoWorkloadPath), '.version-for-none-$(SdkVersionForWorkloadTesting).stamp'))</_SdkWithNoWorkloadStampPath>
1212
<InstallWorkloadUsingArtifactsDependsOn>
1313
$(InstallWorkloadUsingArtifactsDependsOn);
14+
_ProvisionDotNetForWorkloadTesting;
15+
_GetDotNetVersion;
1416
_SetPackageVersionForWorkloadsTesting;
1517
_GetNuGetsToBuild;
1618
_PreparePackagesForWorkloadInstall;
1719
GetWorkloadInputs;
18-
_ProvisionDotNetForWorkloadTesting;
1920
_InstallWorkloads
2021
</InstallWorkloadUsingArtifactsDependsOn>
2122
</PropertyGroup>
@@ -85,6 +86,39 @@
8586
<RemoveDir Directories="@(_ManifestsToRemove)" Condition="Exists(%(_ManifestsToRemove.Identity))" />
8687
</Target>
8788

89+
<Target Name="_GetDotNetVersion">
90+
<PropertyGroup>
91+
<_DotNetPath>$([MSBuild]::NormalizePath($(_SdkWithNoWorkloadPath), 'dotnet'))</_DotNetPath>
92+
<_DotNetPath Condition="$([MSBuild]::IsOSPlatform('windows'))">$(_DotNetPath).exe</_DotNetPath>
93+
<_DotNetVersionCommand>$(_DotNetPath) --version</_DotNetVersionCommand>
94+
</PropertyGroup>
95+
96+
<Exec Command="$(_DotNetVersionCommand)" ConsoleToMsBuild="true" StandardOutputImportance="Low" IgnoreExitCode="true">
97+
<Output TaskParameter="ConsoleOutput" PropertyName="_DotNetVersionOutput" />
98+
<Output TaskParameter="ExitCode" PropertyName="_DotNetVersionExitCode" />
99+
</Exec>
100+
101+
<!-- If `dotnet -version` failed, then run it again, so we can surface the output as *Errors*.
102+
This allows the errors to show up correctly, versus trying to use the output lines with
103+
the Error task -->
104+
<Exec Condition="$(_DotNetVersionExitCode) != '0'" Command="$(_DotNetVersionCommand)" CustomErrorRegularExpression=".*" />
105+
106+
<PropertyGroup>
107+
<SdkBandVersionForWorkload_ComputedFromInstaller>$(SdkBandVersion)$([System.Text.RegularExpressions.Regex]::Match($(_DotNetVersionOutput), `-[A-z]*[\.]*\d*`))</SdkBandVersionForWorkload_ComputedFromInstaller>
108+
</PropertyGroup>
109+
110+
<Message Text="** Using sdk band version for installing manifests: $(SdkBandVersionForWorkload_ComputedFromInstaller)" Importance="High" />
111+
<Message Text="
112+
********************
113+
114+
Warning: Using sdk band version for installing manifests: $(SdkBandVersionForWorkload_ComputedFromInstaller),
115+
but the sdk band version in runtime is : $(SdkBandVersionForWorkload_FromRuntimeVersions)
116+
117+
********************"
118+
Condition="$(SdkBandVersionForWorkload_ComputedFromInstaller) != $(SdkBandVersionForWorkload_FromRuntimeVersions)"
119+
Importance="High" />
120+
</Target>
121+
88122
<Target Name="_SetPackageVersionForWorkloadsTesting">
89123
<PropertyGroup>
90124
<!-- Used for workload testing -->
@@ -226,7 +260,8 @@
226260
<InstallWorkloadFromArtifacts
227261
WorkloadIds="@(WorkloadIdForTesting)"
228262
InstallTargets="@(_SdkWithWorkloadToInstall)"
229-
VersionBand="$(SdkBandVersionForWorkload)"
263+
VersionBandForSdkManifestsDir="$(SdkBandVersionForWorkload_ComputedFromInstaller)"
264+
VersionBandForManifestPackages="$(SdkBandVersionForWorkload_FromRuntimeVersions)"
230265
LocalNuGetsPath="$(LibrariesShippingPackagesDir)"
231266
TemplateNuGetConfigPath="$(RepoRoot)NuGet.config"
232267
SdkWithNoWorkloadInstalledPath="$(_SdkWithNoWorkloadPath)"

src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.Current.Manifest/Microsoft.NET.Workload.Mono.Toolchain.Current.Manifest.pkgproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
</PropertyGroup>
77

88
<Target Name="_PrepareForPack" BeforeTargets="GetPackageFiles" Returns="@(PackageFile)">
9+
<Error Condition="'$(SdkBandVersionForWorkload_FromRuntimeVersions)' == ''"
10+
Text="%24(SdkBandVersionForWorkload_FromRuntimeVersions) is not set" />
11+
912
<!-- Override the id to include the sdk band as per the workload installer spec -->
1013
<PropertyGroup>
11-
<Id>Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest-$(SdkBandVersionForWorkload)</Id>
14+
<Id>Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest-$(SdkBandVersionForWorkload_FromRuntimeVersions)</Id>
1215
</PropertyGroup>
1316

1417
<PropertyGroup>

src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net6.Manifest.pkgproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
</PropertyGroup>
77

88
<Target Name="_PrepareForPack" BeforeTargets="GetPackageFiles" Returns="@(PackageFile)">
9+
<Error Condition="'$(SdkBandVersionForWorkload_FromRuntimeVersions)' == ''"
10+
Text="%24(SdkBandVersionForWorkload_FromRuntimeVersions) is not set" />
11+
912
<!-- Override the id to include the sdk band as per the workload installer spec -->
1013
<PropertyGroup>
11-
<Id>Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest-$(SdkBandVersionForWorkload)</Id>
14+
<Id>Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest-$(SdkBandVersionForWorkload_FromRuntimeVersions)</Id>
1215
</PropertyGroup>
1316

1417
<PropertyGroup>

src/mono/nuget/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest/Microsoft.NET.Workload.Mono.Toolchain.net7.Manifest.pkgproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
</PropertyGroup>
77

88
<Target Name="_PrepareForPack" BeforeTargets="GetPackageFiles" Returns="@(PackageFile)">
9+
<Error Condition="'$(SdkBandVersionForWorkload_FromRuntimeVersions)' == ''"
10+
Text="%24(SdkBandVersionForWorkload_FromRuntimeVersions) is not set" />
11+
912
<!-- Override the id to include the sdk band as per the workload installer spec -->
1013
<PropertyGroup>
11-
<Id>Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest-$(SdkBandVersionForWorkload)</Id>
14+
<Id>Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest-$(SdkBandVersionForWorkload_FromRuntimeVersions)</Id>
1215
</PropertyGroup>
1316

1417
<PropertyGroup>

src/tasks/WorkloadBuildTasks/InstallWorkloadFromArtifacts.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ public class InstallWorkloadFromArtifacts : Task
2626
public ITaskItem[] InstallTargets { get; set; } = Array.Empty<ITaskItem>();
2727

2828
[Required, NotNull]
29-
public string? VersionBand { get; set; }
29+
public string? VersionBandForSdkManifestsDir { get; set; }
30+
31+
[Required, NotNull]
32+
public string? VersionBandForManifestPackages { get; set; }
3033

3134
[Required, NotNull]
3235
public string? LocalNuGetsPath { get; set; }
@@ -301,7 +304,7 @@ private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string v
301304
// Multiple directories for a manifest, differing only in case causes
302305
// workload install to fail due to duplicate manifests!
303306
// This is applicable only on case-sensitive filesystems
304-
string manifestVersionBandDir = Path.Combine(sdkDir, "sdk-manifests", VersionBand);
307+
string manifestVersionBandDir = Path.Combine(sdkDir, "sdk-manifests", VersionBandForSdkManifestsDir);
305308
if (!Directory.Exists(manifestVersionBandDir))
306309
{
307310
Log.LogMessage(MessageImportance.Low, $" Could not find {manifestVersionBandDir}. Creating it..");
@@ -310,7 +313,7 @@ private bool InstallWorkloadManifest(ITaskItem workloadId, string name, string v
310313

311314
string outputDir = FindSubDirIgnoringCase(manifestVersionBandDir, name);
312315

313-
PackageReference pkgRef = new(Name: $"{name}.Manifest-{VersionBand}",
316+
PackageReference pkgRef = new(Name: $"{name}.Manifest-{VersionBandForManifestPackages}",
314317
Version: version,
315318
OutputDir: outputDir,
316319
relativeSourceDir: "data");

0 commit comments

Comments
 (0)