conan
conan copied to clipboard
[feature] Allowing a per-local-cache user declaration of compiler compatibility for all dependents
Hi,
This proposal is to satisfy two points of view, discussed between myself and @FnGyula in our products usage of Conan, against a large set of dependent packages (that we maintain).
We follow guidelines in our industry to maximise compatibility in the domain, which often requires a compiler change (across 3 desktop platforms) every year. We are aiming at reducing the initial up-front-cost of trying out new compiler versions in product, without needing a whole library stack rebuild at the same time. Currently, we set the compiler.version back in profiles for any dependent that has not been rebuilt, but it is an effort that is then undone when rebuilds eventually occur.
The short of it is to allow users to declare compiler compatibility, per local cache, for dependent packages, without needing to modify any recipes.
First pov
The main idea here is to avoid the catch22 with compatible packages:
- You have a recipe
- Have a new compiler
- See that it is compatible
- If I update the recipe to add it as a compatible compiler, change the recipe for the package_id
- Now I have no binary for that new revision and might as well build it against the new compiler all the same
Second pov
A generalisation of the existing Intel compiler compatibility with GCC versions, in the global user-space to decide on what they're comfortable with, in order to provide fallbacks for dependent packages while upgrading a product's choice of compiler version.
I have a proof of concept proposal, including an integration test, that I will link to this in a PR shortly.
We have this in mind for Conan 1.x+
- [x ] I've read the CONTRIBUTING guide.