ffcx icon indicating copy to clipboard operation
ffcx copied to clipboard

Bump CMake to 3.19

Open jorgensd opened this issue 3 years ago • 5 comments

jorgensd avatar Sep 14 '22 14:09 jorgensd

Can you explain the change from same minor version to any newer version?

jhale avatar Sep 15 '22 08:09 jhale

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.

jorgensd avatar Sep 15 '22 10:09 jorgensd

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.

jhale avatar Sep 16 '22 07:09 jhale

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.

Lets chat on monday.

jorgensd avatar Sep 16 '22 08:09 jorgensd

@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.

jhale avatar Oct 07 '22 07:10 jhale