-
-
Notifications
You must be signed in to change notification settings - Fork 10k
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
Implement a compatibility_version
/api_version
/abi_version
DSL
#19202
Comments
Thanks for write-up @carlocab, this is great! Thoughts:
Suggest "optional while we're rolling it out" and then "mandatory for anything that has a dependency on anything else" (i.e. if something has no dependancies: not required, if a dependency is added later: CI fails on the dependent add until it's added to the dependency). For an initial value for this field: we could set it to the
I think this logic is essentially the same way we detect " The tricky bit is deciding if some dependencies need a bump and others don't (and also the cases where the linkage or test has bitrot into failing). Perhaps it should be something like >=50% of total dependencies needed bumped?
This will be trickier. Might be a bit of a manual/human process here or Will want to make sure we socialise (very) hard that
Note: this should be stored in the |
Somewhat. The tricky part is the following. Suppose formula The reason is that dependents may also themselves have had version bumps since we updated |
Apologies if any of this has already been discussed in person... Clarification:
Did you mean dependents when you wrote "dependencies"? If I understand this proposal correctly, it's a coarser-grained dependency-POV versioning alternative to the typical dependent-POV versioning common with other package management systems (e.g.
should read:
since Also, how do security fixes factor into this scheme? These almost never change the ABI, nor do they result in major upstream revs, but if (In that last case, and/or for users who expect and appreciate the current "always upgrade to latest" behaviour, perhaps a new |
|
Verification
brew install wget
. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.Provide a detailed description of the proposed feature
Formulae should have an (optional?)
compatibility_version
field. Alternative suggested names for this field areapi_version
orabi_version
.The
compatibility_version
field should capture suitability for use as a dependency. In particular, if a formula has acompatibility_version
of1
, then it need not be upgraded when installing or upgrading dependencies as long as dependencies are known to work with versions of the formula that havecompatibility_version 1
.A crucial part of this feature involves including CI testing so that:
compatibility_version
is bumped whenever neededcompatibility_version
is not bumped when a bump is not neededTo do the above, we would likely need to run the following dependent tests (or something similar to them):
If
compatibility_version
is bumped, we need to check that each dependent is broken when using the previouscompatibility_version
, but is not broken under the newercompatibility_version
.If
compatibility_version
is not bumped, then we need to check that each dependent still works when using the oldest bottles that have the samecompatibility_version
.What is the motivation for the feature?
This should help minimise the number of formulae that
brew {install,upgrade} foo
needs to upgrade to ensure that user installs are not broken.How will the feature be relevant to at least 90% of Homebrew users?
This should help address a pain point that many users have expressed many times over the years.
What alternatives to the feature have been considered?
Doing nothing.
The text was updated successfully, but these errors were encountered: