-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
[question] [docs] Rules about upgrading the requirements #2477
Comments
Yes, the main problem is when there is a conflict because two graphs require a different version of some requirements. We would really want to avoid this situation, so it is perfectly ok to open a PR to upgrade only a requirement. What else can be done?
Any other alternative? |
let's try to illustrate the situation on the hypothetical example. for instance, we have a library |
Most of projects don't use a specific version for dependencies, it's hard for us tracking it. Indeed should reasonable keeping them aligned due the compatibility, but would need to check which version the author used, the latest version available when that release was made (by date)? |
@uilianries yes, there a projects like that. on the opposite side, there are cases then versions of dependencies are very hard requirements. for instance, your favorite protobuf - in case the project includes sources generated with protoc, it will need to link with the same version of protobuf, as generated sources contain hard version check. |
My particular pain is fmt, which has a very aggressive release cycle, much more than it's dependents. Juggling 4 projects which require it is a growing pain. Version 6.0, 6.2, and 7.0 are requirements but all support 7.0 since they are not impacted by the API changes. I would have to agree that automatically upgrading the requirements would be a sticky situation. To add to SSE$'s points, some recipes require a different version depending on the version (but these could be changed). I have to test my code base when I changing dependencies, I may submit a few PRs after I am confident there's no issue. There will have to be a case by case review. Would it be possible for the bot to fill an issue that shows all the conflicts? |
Auto updating recipes doesn't scale. What about recipes with a lot of dependencies (and big binaries)? |
This is a summary, from my perspective, of tha main points that needed to be saved closes conan-io#2477
looking at this from a different angle: as i've came across this when trying to resolve dependency conflicts in my project. i certainly understand the combinatoric explosion of configurations and problems that arise from dependency management, but i tend to run into issues where different dependencies pull in different versions of other dependencies. libcurl is a great example:
different recipes depend on different libcurl versions. typically it seems to be the "most recent version when writing a packge". openssl is another, where recipes tend to depend on this makes me wonder if there should be some kind of recommendation to require with version ranges rather than a specific version? in the world of package managers like debian packages this seems to be quite common |
The challenge is the ABI correctness is not always guaranteed. with |
this is certainly not true: if you consult the "Backward Compat.", the only change ABI break listed here was
well, conan already has issues when it comes to reproducibility: since recipes aren't versioned one build of out of curiosity: in what way is conan different than debian packages? after all version ranges work quite well for debian, which is a rather mature project with a huge number of packages |
There's a reason the squares are colored... orange, yellow, green have meaning. You might find backwards compatible with a sprinkle of surprise behavior ! https://abi-laboratory.pro/index.php?view=compat_report&l=curl&v1=7.69.1&v2=7.70.0&obj=19c9c&kind=abi#c_1
They are, CCI fully supports revisions check https://conan.io/center/libcurl you need to enable you local client for this feature to be enabled. Check this blog out https://blog.conan.io/2019/03/12/New-conan-release-1-13.html |
reading this it is a little paranoid:
interesting. i need to have a look how to integrate this into my project. though i wonder why this is per-local-client rather than per-project 🤔 though again: in which way are conan recipes different to debian packages? |
Closing this issue due the new redesigned ConanCenterIndex CI service. Please, read #25772 for further information. |
Given that a recipe has many dependencies, it's very common that one of it's requirements can have a higher version available in CCI then whats written in the recipe.
For header only there is no issue as the requirement can be overridden by the consuming
conanfile
, however compiled libs may suffer from API/ABI incompatibilities. This makes resolving conflicts very painful when two graphs overlap. Typically we get stuck building the package locally.Ideally as a consumer, it's preferable to pull everything from CCI rather than building things locally.
The text was updated successfully, but these errors were encountered: