Pin all packages to latest versions, track SCCB
This ticket is to discuss the idea and implementation of pinning all packages, and beginning to only update environments when SCCB approves changes.
How to pin
It's easy to just conda export each environment into new files, but that leaves us with something that is (a) unreadable, and (b) hard to maintain. So, I propose a few different models:
- pin only lscsoft packages, and leave everything else in the wild, which means we list the same number of packages as we do now
- pin all packages to a specific version (but not build)
- pin all packages to a specific build
I think I prefer option (2).
How to build environment files that are easily to maintain
In terms of maintenance the following makes sense to me
- remove the environment YAML files from the repo
- replace them with a series of component files that list out (with whatever pinning we agree upon) the packages in that group
- use CI to build the actual YAML files and have them published as artefacts
e.g. we would end up with a common.txt
file that includes non-lscsoft components:
astropy x.y.z
autoconf x.y.z
automake x.y.z
and lscsoft.txt
that includes the lscsoft components that are python-version-independent:
bilby 0.4.0
gwpy 0.14.0
lal 6.19.0
and then extra lscsoft-pyXY.txt
files that include python-version-dependent components:
pycbc 1.13.4
The idea of this is to end up with a system where each package is only listed once in any file, meaning when its version needs a bump, we have a canonical location in which to do it.
@thomas.downes, @adam-mercer, thoughts?