In lsst_build, we use versiondb to maintain some form of state and assign a sequence number to the suffix of a product's version, as seen in a build's manifest, in the case when (1) a product has been built before (as evidenced by state in versiondb), and (2) the composition of the dependencies for that product has changed.
This shows up as a sequence, for example, in the eups tag. For a recent daily tag, you would see afw, versioned as:
- in this case, the suffix sequence number is "5".
We believe that sequence number is not particularly useful for eups tags, as it is based on the dependency composition at build time, especially for tags which are not daily/weeklies, could include an older composition of dependencies, and that maintaining the sequence number also requires a maintained state in versiondb for calculation.
We would like to replace the suffix with a hash-based suffix of dependency commits or versions (e.g. merkle tree), which is computable. There is already support for this in lsst_build which hashes based on version, although we may switch to using just a commit.
As an example, under this proposal, a version which looks like this:
... would change to a version which looks like this:
Note that products without dependencies will not have any suffixes.