summaryrefslogtreecommitdiff
path: root/build2/version-management-module
blob: f4086ddb090c9a269efcb08b8fa8986959c0bbc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- module to help with managing project versions [idea]

The place where we have all the information (this project version, all its
dependencies and their versions) is the manifest. So what if we have a module
which loads the manifest (using libbpkg), extracts all this information, and
presents it to the buildfile in a nicely parsed and converted way. That is,
split MAJOR/MINOR/PATCH, pre-release, converted to numeric form, etc.

We can then use this to set all the buildfile-level values (version, revision,
abi_*, etc) as well as generate the version file and even generate the version
header which will define this library version as well as check versions of
dependencies. This generation will probably be done via a custom/inline rule.

* Since this module will depend on libbpkg, would make sense to make it dyn
  loadable and optional (include pre-generated files in dist).

* Will require the use of semantic versioning.

* What about using build2@X.Y.Z? Theoretically, the version module could
  even issue this. Though it is optional.

* Don't think we allow bootable optional modules at the moment.