Handling release and version of different modules
Main issue
The problem tackled by this issue is: "How to ensure the correspondance between the different version of the different modules of Aidge".
For example, aidge_backend_cpu
0.1.0 depends on aidge_core
0.1.0 and so during release, we need to compile it with this version, compiling with 0.0.0 will not work!
A few solutions are proposed:
- Run relase from bundle using downstream multi-project pipelines using commit version provided by the submodule system.
- Create a JSON file in each repository containing dependencies and link to commit version
- Just pull the latest commit on main for each dependencies
Handling version dependencies
This lift another issue, right now we do not handle version depencies at runtime. We should have error if we load aidge_core 0.2 with aidge_bakcend_cpu 0.1 as a change in major induce API changes...
I propose for this to simply use CMAKE find_package version argument. For python we can also use pyproject.toml for handling version.
Since we will need this information for both python and C++ I propose to create a dependencies.txt
which will be parsed and use for this purpose.
I think that with this mecanism we can even go safely with the method 3 and add in CI pipeline a simple check on major version. Raising an error that the package is not compatible.