-
Notifications
You must be signed in to change notification settings - Fork 264
Add mechanism to deprecate a wrap in releases.json
#2529
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
base: master
Are you sure you want to change the base?
Conversation
mesonbuild/wrapdb#2529 adds a mechanism for marking wraps as deprecated in releases.json. If a wrap is deprecated, hide it from `meson wrap list` and `meson wrap search` output, warn if it's passed to `meson wrap install` or `meson wrap info`, warn if it's present during `meson wrap status` or `meson wrap update`, and warn if it's automatically installed from `wrapdb.json`.
mesonbuild/wrapdb#2529 adds a mechanism for marking wraps as deprecated in releases.json. If a wrap is deprecated, hide it from `meson wrap list` and `meson wrap search` output, warn if it's passed to `meson wrap install` or `meson wrap info`, warn if it's present during `meson wrap status` or `meson wrap update`, and warn if it's automatically installed from `wrapdb.json`. Omit deprecated wraps from the wrap list on the website.
|
Added a deprecation for |
5a3a7e0 to
135b64b
Compare
mesonbuild/wrapdb#2529 adds a mechanism for marking wraps as deprecated in releases.json. If a wrap is deprecated, hide it from `meson wrap list` and `meson wrap search` output, warn if it's passed to `meson wrap install` or `meson wrap info`, warn if it's present during `meson wrap status` or `meson wrap update`, and warn if it's automatically installed from `wrapdb.json`. Omit deprecated wraps from the wrap list on the website.
.def files are already allowed.
We have two formally-deprecated wraps, `json` and `onqtam-doctest`, a wrap `luajit` that doesn't perform formal releases and should not have been accepted, and a wrap `pcre` that's unmaintained and deprecated upstream. Add a mechanism for declaring these in releases.json so Meson can warn about it.
|
Added a distinction between |
|
Any objections? |
|
I think the catch wrap should be as well. |
|
I don't under the purpose of "successor". It's for cases where the upstream project has made API/ABI incompatible major version changes, apparently, and the WrapDB wants to... what? Warn people that they'd be better off porting to the newer but dramatically different APIs? For the stated example brought as a rationale for adding this metadata marker, pcre is "end of the line" software upstream in favor of pcre2, but enough years later that I shudder to think about it... half the world hasn't actually migrated because migrating is complicated (and even the pcre developer no longer remembers what the things to watch out for during a port are, because the porting documentation was never written down and existed only in a couple people's heads). I would very much say, that while there will never be a new upstream tag for pcre, we would/should consider the wrap itself supported in the sense that we'd accept updates to the meson.build files. And from a Meson perspective I'm opposed to having The doctest / json etc wraps are different since we're dealing with renamed wraps and really the only useful metadata property is the fact that the wrap entry has been redirected to a new name. So this PR does seem to handle that as expected. Stuff like luajit is interesting and I'm not sure what the best way to deal with it is. Upstream luajit failing to release notwithstanding, the entire world actually does use luajit and package it for distros etc and so forth, so if it's good enough for stable distros I do hear the argument that it should be accepted in the WrapDB. It is ugly though, there is no denying it. |
Yes. It's work they need to do eventually, whether anyone likes it or not. The first version of this PR implied that
Our responsibility for it has to end at some point, especially since we can't have downstream patches by policy. However, we could have sanity checks permit wrap updates in the
Yeah, it's not great. If we actually want to support LuaJIT I can remove the deprecation for it. My main concern is that upstream doesn't seem to be well-behaved (previous discussion) and we don't have the capacity for the level of maintenance upstream has decided to expect. |
|
Looking around a bit, Fedora deprecated pcre but hasn't removed it yet, Debian removed it in current stable, Ubuntu still has it (tracker). |
|
That doesn't change my stance -- |
|
Okay, why not though? What's the downside of warning developers that they need to do some maintenance to, e.g. in this case, stay in security support? |
|
There are already quite a few ways for projects to become aware of this, and I don't really think that the build system needs to be responsible for tracking lists of deprecated software. It provides an inconsistent experience between wraps and system dependencies. The message primarily targets users building the software (who can't do anything about it), rather than developers writing the software (who can). It breaks building with --fatal-meson-warnings without providing good value for the cost. Regarding the documentation for de-listing deprecated wraps, it is inconsistent to list old versions of a single wrap name (that are all deprecated) but not list old major versions of pcre, just because the two can be installed in parallel. Although eliding renamed wraps seems reasonable. |
|
Okay. That leaves us with the two cases where WrapDB uniquely has information about a wrap: renamed wraps (which seems uncontroversial) and wraps we don't intend to maintain anymore. Do you object to showing a warning in the latter case? I agree that if the website lists old wrap versions it should also list unmaintained wraps; we could maybe add e.g. So, re the current set of wraps: |
We have two formally-deprecated wraps,
jsonandonqtam-doctest, plus a wrapluajitthat doesn't perform formal releases and should not have been accepted. Add a mechanism for declaring these inreleases.jsonso Meson can warn about it.