Skip to content

[3.10] build: enable aarch64 optimizations - #904

Open
113xiaoji wants to merge 4 commits into
conda-forge:3.10from
113xiaoji:codex/enable-aarch64-optimizations-310
Open

[3.10] build: enable aarch64 optimizations#904
113xiaoji wants to merge 4 commits into
conda-forge:3.10from
113xiaoji:codex/enable-aarch64-optimizations-310

Conversation

@113xiaoji

@113xiaoji 113xiaoji commented Aug 21, 2026

Copy link
Copy Markdown

Summary

Linux AArch64 builds now run natively, but the Python 3.10 branch still
inherits the historical emulated-CI override that disables its existing
LTO and PGO path.

Changes

  • Remove only the Linux AArch64 _OPTIMIZED=no override
  • Keep the cross-built PPC64LE optimization override unchanged
  • Add tk: 8.6 to the recipe variant configuration while keeping the
    meta.yaml host requirement unpinned
  • Rerender with conda-smithy 2026.9.1 so the Tk variant reaches generated
    Windows and PPC64LE CI configurations
  • Bump the unchanged-version recipe build number

The rerender also refreshes generated CI templates and current compiler
pins; those files were generated by conda-forge-admin rather than edited
manually.

Test Plan

  • Verified the candidate retains --with-lto, --enable-optimizations,
    profile-opt, and PROFILE_TASK="-m test --pgo"
  • GitHub Actions run 33707177036 passed linux-64, linux-aarch64, and
    linux-ppc64le
  • The remaining Windows failure installed Tcl/Tk 8.6 successfully, but the
    previous direct host pin did not set the tk variant value consumed by
    run_test.py
  • Verified the rerendered .ci_support/win_64_.yaml and
    .ci_support/linux_ppc64le_.yaml both contain tk: 8.6
  • Verify the newly triggered CI passes with the canonical variant pin

Known Concern

Native AArch64 Python rebuilds have an open downstream cross-build
compatibility issue in #880. This PR does not alter that sysconfig/linker
behavior.

Part of #903

@conda-forge-admin

conda-forge-admin commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipe/meta.yaml:

  • ℹ️ The recipe is not parsable by parser conda-souschef (grayskull). This parser is not currently used by conda-forge, but may be in the future. We are collecting information to see which recipes are compatible with grayskull.
  • ℹ️ The recipe is not parsable by parser conda-recipe-manager. The recipe can only be automatically migrated to the new v1 format if it is parseable by conda-recipe-manager.

This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/33723408923. Examine the logs at this URL for more detail.

@113xiaoji
113xiaoji marked this pull request as ready for review August 21, 2026 17:34
@h-vetinari h-vetinari changed the title build: enable aarch64 optimizations [3.10] build: enable aarch64 optimizations Aug 21, 2026
@113xiaoji 113xiaoji closed this Aug 22, 2026
@113xiaoji
113xiaoji force-pushed the codex/enable-aarch64-optimizations-310 branch from d159d17 to 028799a Compare August 22, 2026 15:07
@113xiaoji 113xiaoji reopened this Aug 22, 2026
@113xiaoji

Copy link
Copy Markdown
Author

@msarahan @xhochy @scopatz @pelson @ocefpaf @jakirkham @isuruf @mbargull @katietz

Could you please review this PR when possible? It is now rebased onto the latest 3.10 branch and the merge conflict has been resolved. The diff remains limited to removing the three-line Linux AArch64 optimization guard and bumping the build number. Thank you!

@113xiaoji

Copy link
Copy Markdown
Author

@msarahan @xhochy @scopatz @pelson @ocefpaf @jakirkham @isuruf @mbargull @katietz

The corresponding Python 3.11 PR (#905) and Python 3.12 PR (#906) have now both been merged. Could you please review and merge this Python 3.10 counterpart as well? It is currently mergeable and contains the same scoped Linux AArch64 optimization change. Thank you!

@jakirkham jakirkham added the automerge Merge the PR when CI passes label Sep 2, 2026
@conda-forge-admin

Copy link
Copy Markdown
Contributor

Hi! This is the friendly conda-forge automerge bot!

I considered the following status checks when analyzing this PR:

  • linter: passed
  • azure: passed
  • github-actions: failed

Thus the PR was not passing and not merged.

PPC64LE cross builds otherwise resolve Tk 9, while CPython 3.10
still expects Tcl/Tk 8.6 headers and libraries.
@113xiaoji

Copy link
Copy Markdown
Author

@conda-forge-admin, please rerender

@conda-forge-curator conda-forge-curator Bot removed the automerge Merge the PR when CI passes label Sep 3, 2026
@conda-forge-admin

Copy link
Copy Markdown
Contributor

Hi! This is the friendly conda-forge automerge bot!

Commits were made to this PR after the automerge label was added. For security reasons, I have disabled automerge by removing the automerge label. Please add the automerge label again (or ask a maintainer to do so) if you'd like to enable automerge again!

@113xiaoji
113xiaoji force-pushed the codex/enable-aarch64-optimizations-310 branch from 7cc8f93 to 8fac5bf Compare September 3, 2026 02:18
@113xiaoji

Copy link
Copy Markdown
Author

@isuruf @xhochy The previous PPC64LE failure was caused by the unpinned host dependency resolving Tk 9.0.4, while CPython 3.10 still expects Tcl/Tk 8.6 headers and libraries. Commit 8158a03 pins the host requirement to tk 8.6.* and keeps the PR limited to the original two files. The new workflow run is awaiting approval: https://github.com/conda-forge/python-feedstock/actions/runs/33707177036. Could you please approve the run and restore the automerge label if the checks pass? Thank you!

@113xiaoji
113xiaoji force-pushed the codex/enable-aarch64-optimizations-310 branch from 8158a03 to 7cc8f93 Compare September 3, 2026 06:28
@113xiaoji

Copy link
Copy Markdown
Author

@jakirkham @isuruf @xhochy

For clarity on why this Python 3.10 PR now has a larger diff than the already merged #905 and #906:

The intended AArch64 optimization change is still the same: remove the three-line linux-aarch64 _OPTIMIZED=no guard and bump the build number. The PPC64LE optimization guard has not been changed in this head.

The additional changes are specific to rebuilding the older 3.10 recipe against the current dependency set:

  • The first all-platform rebuild resolved Tk 9 on PPC64LE, while CPython 3.10's build script still explicitly links Tcl/Tk 8.6 (-ltcl8.6 -ltk8.6), so _tkinter could not find the expected headers.
  • Pinning tk 8.6.* directly in meta.yaml fixed dependency resolution, but did not define the conda-build tk variant value. The Windows package test reads os.getenv("tk"), so that approach still failed.
  • The canonical fix is therefore tk: 8.6 in recipe/conda_build_config.yaml, with the host requirement left as plain tk, followed by an official rerender.
  • The rerender was produced by conda-forge-admin with conda-smithy 2026.9.1. Because the generated files on the 3.10 branch were older, it also refreshed current CI templates and compiler pins.

Consequently, the comparison contains 21 files, but only three recipe inputs represent intentional changes: recipe/build_base.sh, recipe/conda_build_config.yaml, and recipe/meta.yaml. The other 18 files are generated rerender output. In contrast, #905 and #906 did not encounter the 3.10 Tk variant issue and therefore remained two-file changes without a rerender.

The current head now passes Linux AArch64, Linux x86_64, Linux PPC64LE, Windows, and both macOS jobs. Could you review this rerendered state and restore the automerge label if it looks acceptable?

The separate suggestion to enable optimizations for cross-compiled PPC64LE has not been applied here.

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.

3 participants