The good news is that it's easy to convince RPM that the source tarball does not extract as expected; you can give an additional argument to %setup that tells it where to start looking. So it's no problem to forge version and release for it with a bit of shell magic.
And it works: These are some rpms in ascending order:
Code: Select all
armagetronad-dedicated-0.2.8.0-0.3.alphaDATE.1.i386.rpm
armagetronad-dedicated-0.2.8.0-0.5.betaDATE.1.i386.rpm
armagetronad-dedicated-0.2.8.0-0.7.preDATE.1.i386.rpm
armagetronad-dedicated-0.2.8.0-0.9.rcDATE.1.i386.rpm
armagetronad-dedicated-0.2.8.0-1.final.i386.rpm
Edit: of course, the parts of the version that are only for RPM to sort things right can be hidden from the filename by later renaming it.
Also, armagetronad-dedicated-0.2.8.pre-xxx will be considered earlier than all the listed RPMs, so for the future, we may have the option of simply leaving out the trailing .0 of preliminary versions. I have not checked what Gentoo says in this case, the docs leave it unspecified.
The Epoch trick did not work as expected: updating Lucifers rpm from aabeta to my rpm worked, but updating into the other direction worked, too. Strange.
However, there is a non-technical problem: with the release tag scheme, all preliminary, intermediate builds appear to carry the version of the next upcoming release. Obviously, this will cause even more confusion than we already have, a lot of people will think armagetronad-dedicated-0.2.8.0-0.7.preDATE.1.i386.rpm already is the final build. The position of the dash here is crucial for those who understand the VERSION-RELEASE scheme, and for those who don't, the whole ID is just too long to grasp. Luckily, RPM tells them on installation that the official version is armagetronad-dedicated-0.2.8.0_preDATE, but who reads RPM output?
Anyway, for the upcoming release, there's not much we can do about it. For the future, we should think about a scheme that clearly distinguishes between official, organized releases and intermediate versions. Something like an even-odd scheme could be useful, like using the version scheme 0.2.9.DATE_alpha for the snapshots that come after the branch, but never actually release a stable 0.2.9 version. Anyway, this, and the unavoidable We-should-speed-up-versions-I-want-to-have-1.0 suggestion, belongs into another thread I don't want to open just yet.