Skip to content

fix(conda): the osx-64 package carries arm64 binaries from conda convert #1822

Closed

Description

@JarryShaw

Describe the bug
The conda-dist job in .github/workflows/cron-conda.yml builds on macos-latest, which is an arm64 runner, so the host package is osx-arm64. It then targets osx-64 (around lines 519-535) and runs conda convert "$host_package" -p osx-64. That step relabels the platform but copies the binaries unchanged, so the published osx-64 package carries arm64 compiled extensions.

This already affected the vendored lxml. With #1814's ruling (option A), it also affects the vendored cffi and cryptography, so ESP decryption would fail to import on Intel Macs. This is inferred from how conda convert works and from the runner's architecture, and has not been confirmed on an Intel Mac.

Expected behavior
Every published conda package carries binaries for its own platform. For example: build osx-64 natively on an Intel runner (macos-13), and either publish osx-arm64 from the arm64 runner as well or stop converting.

Additional context
Found while auditing #1814; see #1821. Blocked until #1821 merges, because both change cron-conda.yml. create-release.yml's conda job should be checked for the same convert step.

Activity

  1. added
    fixPull requests that fix a defect (fix: subject prefix)
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Oct 16, 2026
  2. JarryShaw commented on Oct 16, 2026

    @JarryShaw
    OwnerAuthor

    Blocked until #1821 merges, since both change cron-conda.yml.

  3. moved this to Blocked in PyPCAPKiton Oct 16, 2026
  4. JarryShaw commented on Oct 16, 2026

    @JarryShaw
    OwnerAuthor

    Unblocked: #1821 has merged. A worker is on it.

  5. added
    wipWork in flight - a covering PR is open or an agent is actively on it
    and removed
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Oct 16, 2026
  6. moved this from Blocked to WIP in PyPCAPKiton Oct 16, 2026
  7. JarryShaw commented on Oct 16, 2026

    @JarryShaw
    OwnerAuthor

    #1825 is up. It needs one call from you on cryptography for the Intel macOS conda package.

    cryptography has not shipped an Intel macOS wheel since 49.0.0. I checked with pip download: 48.0.1 has a universal2 wheel, while 49.0.0 and 50.0.2 have none. That leaves the new osx-64 leg to build 50.0.2 from source, which probably links the runner's Homebrew OpenSSL. A package built that way would import on Macs that have Homebrew's OpenSSL and fail on others.

    There is also a smaller question. osx-arm64 is already published, and #1825 keeps it. Should the release completeness check count it too? It currently counts linux-64 and osx-64. Counting it means a release missing only osx-arm64 gets rebuilt.

  8. added
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Oct 16, 2026
  9. moved this from WIP to Needs decision in PyPCAPKiton Oct 16, 2026
  10. JarryShaw commented on Oct 16, 2026

    @JarryShaw
    OwnerAuthor

    take B; use platform pins - i think requirements.txt support that actually

  11. JarryShaw commented on Oct 16, 2026

    @JarryShaw
    OwnerAuthor

    Recorded: option B. Intel macOS pins cryptography==48.0.1, the universal2 wheel, through a platform marker in conda/requirements.txt; pip evaluates those markers, and every other build keeps 50.0.2. util/conda_vendor.py has to write and check that pin too, so Conda Update does not drop it. #1825 gets a revision before merge. The osx-arm64 completeness question is left as is: still published, still not counted.

  12. removed
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Oct 16, 2026
  13. moved this from Needs decision to WIP in PyPCAPKiton Oct 16, 2026
  14. removed
    wipWork in flight - a covering PR is open or an agent is actively on it
    on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    fixPull requests that fix a defect (fix: subject prefix)

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions