Print

Print


Toward your first question - I want the SHA1 available so I can easily go from output of `rpm -q` from a tester who is reporting an issue to a specific version of the code.

Something like `4.6.1-1.master.91.gc41d4c1` gets closer; it works at a technical level, but runs afoul of RPM packaging standards - basically, once an official release is done, the release number (`1.master.91.gc41d4c1`) is meant to be utilized by the distributions.  For example, `xrootd` in Fedora (https://koji.fedoraproject.org/koji/buildinfo?buildID=874518) had 8 rebuilds; this got the release number up to 9.  So, since distros start the release number at `1` for official releases, it's become common to see pre-releases start with `0`.

What about `4.6.1.1-0.master.91.gc41d4c1`?  That meets the criteria of RPM versioning and keeps the release number prefixed with 0.

We still have the problem of determining the "last release".  `git describe` gets confused because we don't merge stable branches through master.

Perhaps we really want "next release", not "last release"?  That is, if I build from `stable-4.6.x`, I want a snapshot build to be prefixed `4.6.1.1-0` or `4.6.2-0` while if I build from `master`, I'd want `4.6.99` (`.99` is used as it assumes it is before `4.7.0` but reasonably after any bugfix release of `4.6.x` series) or `4.7.0-0`.

I see three ways of doing this:
1.  Have Jenkins produce RPMs as build artifacts.  Keep the "next release version" information for each branch in the Jenkins build.  This builds on your idea of allowing `./makesrpm.sh` take the base version as a CLI argument.  So, the knowledge is stored outside the repository: people would have to go to Jenkins to get the RPMs or make reasonable guesses when they are building.
2.  Tag `master` immediately after forking a stable branch (such as `4.7.x.branch`?  Something...). So, the release knowledge would be stored inside git -- but it's a bit opaque.  This is the _closest_ option to what is done today.
3.  Actually store a "version number" somewhere in the repository.  This makes the next target very visible - but runs the chance of the tag and contents of the repository running out of sync.  *However*, this is something Travis-CI can catch!

There's no clear "winner" of the three to me.  Do you see an obvious route?  Maybe a fourth option?

-- 
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/xrootd/xrootd/pull/521#issuecomment-305182238

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1