From 5a7a19f1b76229405c7439f79bfdd91675e17b0e Mon Sep 17 00:00:00 2001 From: Eduardo Villalpando Mello Date: Mon, 27 Jan 2025 11:39:48 -0800 Subject: [PATCH] Identify macOS runtimes correctly --- .../MacOs/FileSystemExplorer.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/dotnet-core-uninstall/MacOs/FileSystemExplorer.cs b/src/dotnet-core-uninstall/MacOs/FileSystemExplorer.cs index 9e7bdd5b..0d034e92 100644 --- a/src/dotnet-core-uninstall/MacOs/FileSystemExplorer.cs +++ b/src/dotnet-core-uninstall/MacOs/FileSystemExplorer.cs @@ -6,6 +6,7 @@ using System.IO; using System.Linq; using System.Runtime.InteropServices; +using System.Text.Json; using Microsoft.DotNet.Tools.Uninstall.Shared.BundleInfo; using Microsoft.DotNet.Tools.Uninstall.Shared.BundleInfo.Versioning; using Microsoft.DotNet.Tools.Uninstall.Shared.Configs; @@ -46,12 +47,22 @@ public virtual IEnumerable GetAllInstalledBundles() return [..sdks, ..runtimes]; } - private static bool IsMacx64Installation(string sdkVersionPath) + private static bool IsMacx64Installation(string bundlePath, bool isSdk) { try { - var rids = File.ReadAllText(Path.Combine(sdkVersionPath, "NETCoreSdkRuntimeIdentifierChain.txt")); - return !rids.Contains("osx-arm64"); + if (isSdk) + { + var rids = File.ReadAllText(Path.Combine(bundlePath, "NETCoreSdkRuntimeIdentifierChain.txt")); + return !rids.Contains("osx-arm64"); + } + else + { + var depsJsonFile = Directory.EnumerateFiles(bundlePath, "Microsoft.*.deps.json", SearchOption.TopDirectoryOnly).FirstOrDefault(); + var targets = JsonSerializer.Deserialize>(File.ReadAllText(depsJsonFile)); + var runtimeTarget = (JsonElement)targets["runtimeTarget"]; + return !runtimeTarget.GetProperty("name").ToString().Contains("osx-arm64"); + } } catch { @@ -89,7 +100,7 @@ private static IEnumerable GetInstalledBundles(params st .Select(dirInfo => { var success = BundleVersion.TryFromInput(dirInfo.Name, out var version); - var arch = IsMacx64Installation(dirInfo.FullName) ? BundleArch.X64 : BundleArch.Arm64; + var arch = IsMacx64Installation(dirInfo.FullName, version is SdkVersion) ? BundleArch.X64 : BundleArch.Arm64; return (Success: success, Version: version, Path: dirInfo.FullName, Arch: arch); }) .Where(tuple => tuple.Success)