-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ENH] boostrap re-locking #375
Comments
Thanks, Albert. This is definitely a problem for my team, and one that causes us many headaches, because we treat locking as a deeply sacred process. Once locked, we really want to be able recreate precisely what we locked to, warts and all. E.g. if this was a scientific project that we archived, we want to reproduce the previous results, even if they were buggy! Or if it's a server deployment that got re-deployed without changes, we want precisely the same running process as before, again even if there were issues with it before. Or if it's a regularly scheduled command, we want to run today just as it did yesterday, whether a package is considered "broken" or not; any other behavior is immediately a breakage, for something I didn't consider broken before! The locked environment is the only one we've actually tested and evaluated, and even if some updates and bugfixes later became available, we explicitly don't want them when building a locked environment. If we did, we would be making a fresh lock, not trying to build the existing one. That perspective has some implications:
For these reasons, I strongly argue that conda and anaconda-project should do their best to find the indicated locked package if it is available in any way, and should automatically install that if so rather than failing or requiring an explicit user interaction. If people disagree and consider the current behavior of failing to be appropriate, then at least let's get more guidance in there for users, but I hope that's not the best we can do. |
One observation I want to make is that what really matters for reproducibility is not where the package is to be found (e.g. I'm not proposing that we actually do it this way, and I am just describing the ideal behavior: a spec like |
There are cases where a package "disappears" from a Conda repository causing a previously locked project to fail to install, usually with a message that a package could not be found.
This happens with conda-forge packages when a broken package needs to be replaced. In some cases the package and version are still available but the build string has changed causing the lock file to break.
It would be great if
anaconda-project update
could accept a flag to re-lock using package versions but allow the build string to float.Here's an example
And the lockfile contains
libtiff=4.3.0=hf544144_0
Preparing the environment causes the following error
This build has been declared broken on conda-forge, but
osx-64/libtiff-4.3.0-h17f2ce3_3.tar.bz2
is available, with the same version but a different build string.The text was updated successfully, but these errors were encountered: