Commit
1 year ago
gh-35986: Use conda-lock for reproducible conda env <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> The conda workflow is broken since a few months due to various issues that arise from some packages being updated in conda-forge and sage not being quite compatible with the new version. For example, currently it fails as Cython 3.0.3 is used. To prevent such issues happening in the feature, we use [conda- lock](https://conda.github.io/conda-lock/) to create a lock file for each os + python combination, from which one can then create a reproducible conda env. These lock files are created using commands of the form: ```bash conda-lock --channel conda-forge --kind env --platform linux-64 --platform osx-64 --file ./src/environment-dev-3.10.yml --filename- template "src/environment-dev-3.10-{platform}" ``` Follow-up: Add a github workflow that updates these lock files automatically, similar to: - https://github.com/ibis- project/ibis/blob/master/.github/workflows/conda-lock.yml - https://github.com/svopper/munaiah- analyser/blob/main/out/SciTools/iris/.github_workflows_refresh- lockfiles.yml - https://github.com/chipsalliance/fpga-interchange- tests/blob/main/.github/workflows/update_conda_lock.yml - https://github.com/ESMValGroup/ESMValTool/blob/main/.github/workflows/ create-condalock-file.yml ### :memo: Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### :hourglass: Dependencies - https://github.com/sagemath/sage/pull/36405: to get env files for each python version - #36767 <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: https://github.com/sagemath/sage/pull/35986 Reported by: Tobias Diez Reviewer(s): Dima Pasechnik, Isuru Fernando, Matthias Köppe, Tobias Diez
Author
Release Manager
Loading