Using versioned self-obsoletes would be a convenient way to avoid Epoch bumps in a lot of cases. However, they don't work (tested on FC-4, I don't have a more recent system to test with). Reproducer specfiles attached. # rpm -qp --provides test-1.0-1.i386.rpm test = 1.0-1 # rpm -qp --provides test-1.1-1.i386.rpm test = 1.1-1 # rpm -qp --obsoletes test-1.0-1.i386.rpm test = 1.1 # rpm -qp --obsoletes test-1.1-1.i386.rpm (none) # rpm -i test-1.0-1.i386.rpm # rpm -U test-1.1-1.i386.rpm # rpm -q test test-1.1-1 # rpm -U test-1.0-1.i386.rpm package test-1.1-1 (which is newer than test-1.0-1) is already I would expect 1.1 not to be treated as an upgrade over 1.0, but yes the other way around.
Created attachment 118929 [details] test-1.0 (obsoletes test = 1.1)
Created attachment 118930 [details] test-1.1
Versioned: self-obsoletes is bad craziness. You really expect a package monkey to figure out how to use an overloaded Obsoletes: functionality in sensible and general ways?
What "overloaded Obsoletes"? Consistent behaviour is easy to understand.