From b7cb908431f6aed5b509e32fc1e56a740b6eee02 Mon Sep 17 00:00:00 2001 From: Ami Hollander Date: Fri, 26 Jan 2024 09:34:56 +0200 Subject: [PATCH] Add preliminary support for linux-arm64 --- README.md | 4 ++-- build/Settings.cs | 14 ++++++++++---- src/Azure.Functions.Cli/Azure.Functions.Cli.csproj | 2 +- src/Azure.Functions.Cli/npm/lib/install.js | 6 +++++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bd03148ed..c5c4dc717 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ winget install Microsoft.AzureFunctionsCoreTools -v 3.0.3904 #### Homebrew: ##### v4 - + ```bash brew tap azure/functions brew install azure-functions-core-tools@4 @@ -203,7 +203,7 @@ sudo apt-get install azure-functions-core-tools-2 Using your preferred tool, unzip the downloaded release. To unzip into an `azure-functions-cli` directory using the `unzip` tool, run this command from the directory containing the downloaded release zip: ```bash - unzip -d azure-functions-cli Azure.Functions.Cli.linux-x64.*.zip + unzip -d azure-functions-cli Azure.Functions.Cli.linux-*.*.zip ``` 3. Make the `func` command executable diff --git a/build/Settings.cs b/build/Settings.cs index 9ad641807..e5e7a3d42 100644 --- a/build/Settings.cs +++ b/build/Settings.cs @@ -44,6 +44,7 @@ private static string config(string @default = null, [CallerMemberName] string k "min.win-x86", "min.win-x64", "linux-x64", + "linux-arm64", "osx-x64", "osx-arm64", "win-x86", @@ -56,6 +57,7 @@ private static string config(string @default = null, [CallerMemberName] string k { "win-x64", "WINDOWS" }, { "win-arm64", "WINDOWS"}, { "linux-x64", "LINUX" }, + { "linux-arm64", "LINUX" }, { "osx-x64", "OSX" }, { "osx-arm64", "OSX" }, { "min.win-x86", "WINDOWS" }, @@ -91,6 +93,7 @@ private static string config(string @default = null, [CallerMemberName] string k { "linux", "linux-x64", + "linux-arm64", "unix", "linux-musl-x64" }; @@ -117,6 +120,7 @@ private static string config(string @default = null, [CallerMemberName] string k { "win-x64", _winPowershellRuntimes }, { "win-arm64", _winPowershellRuntimes }, { "linux-x64", _linPowershellRuntimes }, + { "linux-arm64", _linPowershellRuntimes }, { "osx-x64", _osxPowershellRuntimes }, { "osx-arm64", _osxARMPowershellRuntimes } }; @@ -131,6 +135,7 @@ private static string config(string @default = null, [CallerMemberName] string k { "win-x64", _winPowershellRuntimesNet8 }, { "win-arm64", _winPowershellRuntimesNet8 }, { "linux-x64", _linPowershellRuntimes }, + { "linux-arm64", _linPowershellRuntimes }, { "osx-x64", _osxPowershellRuntimes }, { "osx-arm64", _osxARMPowershellRuntimes } }; @@ -148,6 +153,7 @@ private static string config(string @default = null, [CallerMemberName] string k { "win-x64", _winPowershellRuntimes }, { "win-arm64", _winPowershellRuntimes }, { "linux-x64", _linPowershellRuntimes }, + { "linux-arm64", _linPowershellRuntimes }, { "osx-x64", _osxPowershellRuntimes }, // NOTE: PowerShell 7.0 does not support arm. First version supporting it is 7.2 // https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2#supported-versions @@ -176,15 +182,15 @@ private static string config(string @default = null, [CallerMemberName] string k public static readonly string OutputDir = Path.Combine(Path.GetFullPath(".."), "artifacts"); public static readonly string SBOMManifestTelemetryDir = Path.Combine(OutputDir, "SBOMManifestTelemetry"); - + public static string TargetFramework = "net6.0"; public static readonly string NupkgPublishDir = Path.GetFullPath($"../src/Azure.Functions.Cli/bin/Release/{TargetFramework}/publish"); - + public static readonly string PreSignTestDir = "PreSignTest"; public static readonly string SignTestDir = "SignTest"; - + public static readonly string DotnetIsolatedItemTemplates = $"https://www.nuget.org/api/v2/package/Microsoft.Azure.Functions.Worker.ItemTemplates/{DotnetIsolatedItemTemplatesVersion}"; public static readonly string DotnetIsolatedProjectTemplates = $"https://www.nuget.org/api/v2/package/Microsoft.Azure.Functions.Worker.ProjectTemplates/{DotnetIsolatedProjectTemplatesVersion}"; @@ -270,7 +276,7 @@ public class SignInfo "Grpc.AspNetCore.Server.dll", "Grpc.Core.dll", "Grpc.Core.Api.dll", - "Grpc.Net.Client.dll", + "Grpc.Net.Client.dll", "Grpc.Net.ClientFactory.dll", "Grpc.Net.Common.dll", "grpc_csharp_ext.x64.dll", diff --git a/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj b/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj index 90ee7f6f0..63030256f 100644 --- a/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj +++ b/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj @@ -3,7 +3,7 @@ Exe net6.0 func - win-x64;win-x86;win-arm64;linux-x64;osx-x64;osx-arm64 + win-x64;win-x86;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64 1 4.0 $(MajorMinorProductVersion).$(BuildNumber) diff --git a/src/Azure.Functions.Cli/npm/lib/install.js b/src/Azure.Functions.Cli/npm/lib/install.js index e523d0a41..5704de72b 100644 --- a/src/Azure.Functions.Cli/npm/lib/install.js +++ b/src/Azure.Functions.Cli/npm/lib/install.js @@ -35,7 +35,11 @@ if (os.platform() === 'win32') { platform = 'osx-x64'; } } else if (os.platform() === 'linux') { - platform = 'linux-x64'; + if (os.arch() === 'arm64') { + platform = 'linux-arm64'; + } else { + platform = 'linux-x64'; + } } else { throw Error('platform ' + os.platform() + ' isn\'t supported'); }