Hi,
several people and even some distributions are recompiling debian
packages for some reason or another (e.g. different gcc flags). It
would be nice if there were a consistent way to change the version of
a package to reflect it not being the pristine debian deb.
Currently no nice scheme exists and several used schemes are flawed:
- append suffix:
1.2 -> 1.2.local.1
1.2-3 -> 1.2-3.local.1
This is the worst scheme, security updates, NMUs, recompile NMUs and
even maintainer uploads can break the ordering.
- append debian revision with 4th part:
1.2 -> 1.2-0.0.0.local.1
1.2-3 -> 1.2-3.0.0.local.1
Security updates mess up the ordering:
1.2-3 << 1.2-3sarge1 << 1.2-3sarge1.0.0.local.1 << 1.2-3.0.0.local.1
- append -0a0.local.1 for native versions, a0.local.1 for debian
revisions ending in a digit and 0a0.local.1 otherwise:
1.2 -> 1.2-0a0.local.1
1.2-3 -> 1.2-3a0.local.1
1.2-3b -> 1.2-3b0a0.local.1
This is nearly perfect as long as there is no upload with a debian
revision ending in 'a':
1.2-3 << 1.2-3a << 1.2-3a0a0.local.1 << 1.2-3a0.local.1
While you might argue about the legality of 1.2-3a it is not
impossible to upload such a package.
I'm proposing to define a special char '#' that compares lower than
all other chars except '~' and 'end of version' for the use of
recompiling packages by non Debian entities. In fact '#' would start a
new part of the version giving:
[<epoch>]:<upstream version>[-<debian revision][#<non debian revision>]
The 'non debian revision' would default to ("",0) just like the debian
revision if missing.
Further '#local.1' should be reserved for local use and
'#<distributor>.1' should be recommended for distributions to use.
MfG
Goswin
PS: '#' was picked at random example since it doesn't appear in any
version in main.