ffcx
ffcx copied to clipboard
Bump CMake to 3.19
Can you explain the change from same minor version to any newer version?
Can you explain the change from same minor version to any newer version?
From the documentation:
The COMPATIBILITY mode AnyNewerVersion means that the installed package version will be considered compatible if it is newer or exactly the same as the requested version. This mode should be used for packages which are fully backward compatible, also across major versions. If SameMajorVersion is used instead, then the behavior differs from AnyNewerVersion in that the major version number must be the same as requested, e.g. version 2.0 will not be considered compatible if 1.0 is requested. This mode should be used for packages which guarantee backward compatibility within the same major version. If SameMinorVersion is used, the behavior is the same as SameMajorVersion, but both major and minor version must be the same as requested, e.g version 0.2 will not be compatible if 0.1 is requested. If ExactVersion is used, then the package is only considered compatible if the requested version matches exactly its own version number (not considering the tweak version). For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3. This mode is for packages without compatibility guarantees. If your project has more elaborated version matching rules, you will need to write your own custom ConfigVersion.cmake file instead of using this macro. New in version 3.19: The version file generated by AnyNewerVersion, SameMajorVersion and SameMinorVersion arguments of COMPATIBILITY handle the version range if any is specified (see find_package() command for the details). ExactVersion mode is incompatible with version ranges and will display an author warning if one is specified.
If we want to let Basix, FFCx, UFCx and DOLFINx to move independently, we should use AnyNewerVersion, as we could release a new version of Basix (0.6.0), that is compatible with DOLFINx (0.5.1), and with no changes in UFCx
Currently we release new versions of all packages even if there has been no changes to them.
Thanks for the explanation @jorgensd!
At the current rapid stage of development (pre 1.0.0) we are treating minor versions numbers as API breaking. Consequently, Basix 0.6.0 will not be compatible with DOLFINx 0.5.1.
So, I do think SameMinorVersion is correct.
When we get to 1.0.0 we will begin using the major number for API breaking changes, so we may need to change to SameMajorVersion?
We can chat on Slack when you're available, might be easier.
Thanks for the explanation @jorgensd!
At the current rapid stage of development (pre 1.0.0) we are treating minor versions numbers as API breaking. Consequently, Basix 0.6.0 will not be compatible with DOLFINx 0.5.1.
So, I do think
SameMinorVersionis correct.When we get to
1.0.0we will begin using the major number for API breaking changes, so we may need to change toSameMajorVersion?We can chat on Slack when you're available, might be easier.
Lets chat on monday.
@jorgensd It would be nice to get this and the DOLFINx equivalent merged in as we move towards a 0.6.0 release.
It would be best if you press the buttons when you're happy with it.