Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add preliminary support for linux-arm64 #3584

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

amih90
Copy link

@amih90 amih90 commented Jan 26, 2024

Add support for Debian11 (bulleye) on ARM64.

Issue describing the changes in this PR

resolves #3112

Pull request checklist

  • My changes do not require documentation changes
    • Otherwise: Documentation issue linked to PR
  • My changes do not need to be backported to a previous version
    • Otherwise: Backport tracked by issue/PR #issue_or_pr
  • I have added all required tests (Unit tests, E2E tests)

@EverybodyKurts
Copy link

@vrdmr @Francisco-Gamino @andystaples @amamounelsayed @ejizba @hossam-nasr @AnatoliB @khkh-ms

This PR was opened 2 months ago. Can somebody review it?

khkh-ms
khkh-ms previously approved these changes Apr 8, 2024
@khkh-ms
Copy link
Contributor

khkh-ms commented Apr 8, 2024

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@alecglen
Copy link

@khkh-ms Thanks for the review! FYI it appears the test failure is just a missing config in the test environment, and it's not clear to me why that'd be related to the current change.

image

@amih90
Copy link
Author

amih90 commented Apr 19, 2024

/azp run

Copy link

Commenter does not have sufficient privileges for PR 3584 in repo Azure/azure-functions-core-tools

@dirkesquire
Copy link

The test is failing with the single following error:
AZURE_MANAGEMENT_ACCESS_TOKEN is not defined in current environment

@dirkesquire
Copy link

I've determined that "AZURE_MANAGEMENT_ACCESS_TOKEN" is referred to in only two places:

echo "##vso[task.setvariable variable=azure_management_access_token]$accessToken"

 - task: AzureCLI@2
    displayName: Login via Azure CLI to acquire access token
    inputs:
      azureSubscription: $(E2ETestServiceConnectionName)
      scriptType: ps
      scriptLocation: inlineScript
      inlineScript: |
        # acquire access token from Azure CLI and export it to AZURE_MANAGEMENT_ACCESS_TOKEN
        $accessToken = (az account get-access-token --query "accessToken" | % { $_.Trim('"') })
        echo "##vso[task.setvariable variable=azure_management_access_token]$accessToken"

public const string AzureManagementAccessToken = "AZURE_MANAGEMENT_ACCESS_TOKEN";

@dirkesquire
Copy link

dirkesquire commented May 6, 2024

The error is being thrown from this piece of code:

        protected static string AccessToken
        {
            get
            {
                if (_accessToken == null)
                {
                    _accessToken = Environment.GetEnvironmentVariable(Constants.AzureManagementAccessToken);
                    if (string.IsNullOrEmpty(_accessToken))
                    {
                        throw new Exception($"{Constants.AzureManagementAccessToken} is not defined in current environment");
                    }
                }
                return _accessToken;
            }
        }

at Azure.Functions.Cli.Tests.E2E.AzureResourceManagers.BaseAzureResourceManager.get_AccessToken()

Which seems to indicate that, exactly as expected and mentioned above, an environment variable is not being set for this test environment, and that that is the reason this entire PR is being held back, and not an issue with the code in the PR itself.

So what can we do next to push this forward? At the moment the community can not actually run Azure Functions in a dev container on a M1,M2 Mac. This is such a blocker. Should we be looking to try and build the solution locally, and patch it ourselves?

@dirkesquire
Copy link

I did manage to have some level of success with the fix.
I cloned azure-functions-core-tools locally, and applied the changes, and successfully built and published the solution so that I can now run func locally without errors. Hours spent on this because the Microsoft team does not have the time to spend on this PR.

The next problem that I am facing is that there is no worker for workers/python/3.11/LINUX/Arm64.
Please can someone give some advice on how I would arrange to create this worker.
(The worker LINUX/x86 does exist, but not the Arm64 one)

Thank you!

@alecglen
Copy link

@dirkesquire where is it missing from exactly? I've been trying to trace this through and it seems like the Arm64 version should exist: https://github.com/Azure/azure-functions-python-worker/blob/cd13c6aa1db0aba958f4aedded80254d69040899/python/prodV4/worker.config.json#L7

@khkh-ms khkh-ms dismissed their stale review August 5, 2024 20:25

Requires more testing.

@aishwaryabh aishwaryabh changed the base branch from v4.x to main November 26, 2024 20:24
@aishwaryabh aishwaryabh requested review from a team as code owners November 26, 2024 20:24
@joeuy
Copy link

joeuy commented Jan 6, 2025

Any updates?

@jhholm
Copy link

jhholm commented Feb 7, 2025

I managed to get this working in WSL2 with node.js with the premilinary changes in this pull request. I updated the changes mentioned here to the latest release. Would be really nice if this could be officially supported.

@dirkesquire
Copy link

dirkesquire commented Feb 7, 2025

I also managed to finally get this working for linux-arm64 inside a DevContainer on Apple Mac Silicon.
The python worker for linux-arm64 never gets populated and is completely missing. So it means you cannot run the func cli command inside a Devcontainer on any Apple Mac released after 2020 (i.e. with the M series Apple Silicon chip (not Intel)).
If I find some time I may try to submit a pull request.

@alecglen When you checkout azure-function-core-tools on the Release_4.0 branch and build and publish then you will notice that /path/to/publishfolder/workers/python/3.X/LINUX/Arm64 does not exist. Only the X64 version gets built for Linux currently.

@liliankasem
Copy link
Member

Hi folks, ownership of this repo recently changed. I'll make this a priority for us to review & merge in our upcoming sprint.

path/to/publishfolder/workers/python/3.X/LINUX/Arm64 does not exist. Only the X64 version gets built for Linux currently.

I can also look into this as well

@liliankasem liliankasem self-assigned this Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Release for aarch64
8 participants