Procedure to deprecate old versions of software#20767
Conversation
| tty.debug('No fetch required for {0}: package has no code.' | ||
| .format(self.name)) | ||
|
|
||
| start_time = time.time() |
There was a problem hiding this comment.
Previously, "fetch time" would include the time that Spack waited at the prompt for the user to confirm or deny no-checksum/deprecated versions.
sethrj
left a comment
There was a problem hiding this comment.
Looks good to me! I think that once we consider removing particular versionss, though, we'll need to have a placeholder for range of removed versions that gives an error when one is selected during concretization (e.g. deleted_versions(':2.56.4')). Otherwise, we will likely see more bizarre concretization errors like this one.
c6783cd to
6dc1116
Compare
|
Ping @spack/merge-to-develop |
cosmicexplorer
left a comment
There was a problem hiding this comment.
I'm not sure how to implement the package-level arg, but we can always apply the arg to all versions of a package.
I think this sounds like a good idea!
6484053
6dc1116 to
6484053
Compare
6484053 to
5e046b6
Compare
|
Yay deprecations! Next, removals. |
|
@adamjstewart is there interaction between this PR and the |
|
I could see that being useful. I've never used that command. It's for deprecating versions with security vulnerabilities, right? Or is it for deprecating modules? One possible option would be to add a flag to search for installed software that is deprecated. |
|
It's for deprecating versions with security vulnerabilities (or with correctness bugs). It basically just symlinks one spec into the location of another. |
|
FYI, I tried out the deprecated tag for a package.py just now. It works great, but I noticed that it resolved/installed all dependencies before displaying the prompt informing the user that the package/version is deprecated. Not a big deal, but it might be nicer to present this prompt immediately before taking further action. |
|
I agree. I'm not sure how to do this though. Probably similar to how |
|
@becker33 @adamjstewart @scheibelp @tldahlgren @tgamblin Did anybody think how to handle these version deprecations during a release cycle? Would it make sense to use a version('1.2.3', sha256='...', deprecated='v0.17')or a similar value instead of a Boolean? The issue I see is that if we use just |
|
That's not a bad idea. But we can also grep for deprecated=True right after a new release and remove anything for the next release. |
|
I think that means we should ensure that no |
|
It wouldn't take very many changes to do this. I think it's still fine for Day 1: deprecate version I don't see a problem with the above scenario. For anyone moving from release to release they will have a full release cycle to warn them. |
|
|
Ah, yes, that's not allowed. Aside from code review, I guess the easiest way to enforce that with unit tests would be your version suggestion. |
See proposal in #15896
deprecatedargdeprecatedargExample usage:
I'm not sure how to implement the package-level arg, but we can always apply the arg to all versions of a package.