cooperative-computing-lab / cctools

The Cooperative Computing Tools (cctools) enable large scale distributed computations to harness hundreds to thousands of machines from clusters, clouds, and grids.
http://ccl.cse.nd.edu
Other
134 stars 120 forks source link

Poncho pinned #3955

Closed btovar closed 1 month ago

btovar commented 1 month ago

Proposed Changes

This pr adds “pinned” to the poncho spec. The target use case is something like topcoffea, where we want to create an environment compatible with another environment. For example, we want numpy in the former, which means it should be the same version of numpy in the latter. The “pinned” spec allows specifying versions of packages that should be used in case they need to be installed as a dependency.

As an example:

{
    "conda": {
        "channels": ["conda-forge"],
        "packages": [
            "ndcctools",
        ]
    },
    "pinned": {
      "conda": {
        "python": "3.8.20=h4a871b0_2_cpython"
      }
    }
}

The above will try to install ndcctools, which depends on python. Python is pinned to version 3.8.20 and thus the version installed for ndcctools is 7.12.0, the last version that exists with python 3.8 support.

Currently this only works for conda packages. I'm thinking how to do this easily for pip.

If this looks good, I can update the docs.

Merge Checklist

The following items must be completed before PRs can be merge. Check these off to verify you have completed all steps.