Instead of transforms, there's already an excluded character
list in version comparison. All excluded characters are treated
equivalently (originally, and still in @rpm.org code, all "other"
punctuation characters are treated equivalently: so
1.2_3 = 1.2|3
See rpmdb/rpmevr.c (where the comparison routines live)
for two quirks:
/* XXX Force digits to beat alphas. See bugzilla #50977. */
/*@unchecked@*/
#if defined(RPM_VENDOR_MANDRIVA) || defined(RPMVERCMP_DIGITS_BEAT_ALPHA) /* old-comparision-behaviour */
static int _invert_digits_alphas_comparison = -1;
#else
static int _invert_digits_alphas_comparison = 1;
#endif
/* XXX Punctuation characters that are not treated as alphas */
/*@unchecked@*/ /*@observer@*/
static const char * _rpmnotalpha = ".:-";
Unless you need to handle "branding" in release with the expectation of "newer",
don't do what Mandriva is doing.
And add any characters you wish to the excluded character _rpmnotalpha list.
The far harder issue (which likely necessitates awkward/complex transforms always)
is tools like zipper not using rpmlib API calls for version comparison.
Instead of transforms, there's already an excluded character
list in version comparison. All excluded characters are treated
equivalently (originally, and still in @rpm.org code, all "other"
punctuation characters are treated equivalently: so
1.2_3 = 1.2|3
See rpmdb/rpmevr.c (where the comparison routines live)
for two quirks:
/* XXX Force digits to beat alphas. See bugzilla #50977. */ RPM_VENDOR_ MANDRIVA) || defined( RPMVERCMP_ DIGITS_ BEAT_ALPHA) /* old-comparision -behaviour */ digits_ alphas_ comparison = -1; digits_ alphas_ comparison = 1;
/*@unchecked@*/
#if defined(
static int _invert_
#else
static int _invert_
#endif
/* XXX Punctuation characters that are not treated as alphas */
/*@unchecked@*/ /*@observer@*/
static const char * _rpmnotalpha = ".:-";
Unless you need to handle "branding" in release with the expectation of "newer",
don't do what Mandriva is doing.
And add any characters you wish to the excluded character _rpmnotalpha list.
The far harder issue (which likely necessitates awkward/complex transforms always)
is tools like zipper not using rpmlib API calls for version comparison.