Skip to content

Package sync unpins packages with linux-x64 client vs. linux-aarch64 cluster #335

@crusaderky

Description

@crusaderky

coiled 1.131.0

I'm on a Linux Intel x64 client and I want to spin up an AWS Graviton cluster.
package-sync does not respect version pins, and instead installs the latest version of binary packages.

From my Linux Intel x64 desktop:

conda create -n test coiled pandas==3.0.0
conda activate test

then run:

import coiled
import distributed
import pandas

def pd_version():
    return pandas.__version__

with coiled.Cluster(
    n_workers=1,
    worker_vm_types=["m8g.large"],
    scheduler_vm_types=["m8g.large"],
) as cluster:
    with distributed.Client(cluster) as client:
        print(client.submit(pd_version).result())

output:

[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - bcrypt, bcrypt~=5.0.0 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - lz4, lz4~=4.4.5 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - numpy, numpy==2.4.2 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - pandas, pandas==3.0.0 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - pillow, pillow~=12.1.1 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
[2026-02-19 11:20:04,370][WARNING ][coiled.package_sync] Package - psutil, psutil~=7.2.2 has no install candidate for Python 3.14 linux-aarch64 on conda-forge
3.0.1

What I think is happening is that pandas=3.0.0 exists on both linux-x64 and linux-aarch64, but the build differs between architectures:

Expected behaviour

When client architecture does not match cluster architecture, match the version and silently unpin the build.
I did not test this with a osx-arm64 client but I would be surprised to find the issue there already as it's such a common use case? Which would mean that the special case code is already there but it's too specific.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions