Obsoletes, Obsoletes, Obsoletes

Michael Schwendt mschwendt at gmail.com
Tue Aug 20 22:29:17 UTC 2013


Oh no! Another one of those threads... ;-)

Well, a comment from Thomas Moschny inspired me to examine "Obsoletes"
tags in our package collection a bit.

How to find "Obsoletes" tags, which are not high enough?

For example, it happens regularly that even with Fedora's Package Rename
Process, which requires a package review, incorrect Obsoletes (the $obsver
in the guidelines) manage to slip through because of the dist tag. The
supposed-to-be-obsolete package remains installed and installable. Or
worse, if not retired properly, it might return with a bumped release
after a rebuild:

      pexpect-0:2.3-9.fc19.noarch  isn't obsoleted
      pexpect <= 0:2.3-9  obsoleted by  python-pexpect-0:2.5.1-6.fc19.noarch

      pexpect-0:2.3-10.fc20.noarch  isn't obsoleted
      pexpect <= 0:2.3-9  obsoleted by  python-pexpect-0:2.5.1-6.fc19.noarch

What has happened? It should have been retired in Fedora 18 already when
it got obsoleted.


So, my first idea has been to look at all packages in the repositories and
search for builds with an EVR that is higher than an existing Obsoletes
tag for that package name. Huge output! A nightmare. A Herculean task to
check them all (until the script may be trusted), but easy enough to
skim over the list and perform a plausibility check:

  latte-integrale
      4ti2-0:1.5-3.fc18.i686  isn't obsoleted
      4ti2 < 0:1.5-1  obsoleted by  4ti2-0:1.5-10.fc20.i686

Indeed. "latte-integrale" is the src.rpm name. It builds a "4ti2"
binary rpm with an EVR higher than the Obsoletes tag. Checking the 
spec file in git:

  %package -n 4ti2
  # This can be removed once Fedora 18 reaches EOL.
  Provides:       4ti2 = %{version}-%{release}
  Obsoletes:      4ti2 < 1.5-1

And there are many more like that. We're really bad here.
I don't even understand that spec file. _Why_ does it add such
Provides (those are automatic for %name anyway) and self-Obsoletes?

Anyway, enjoy the full list here:
http://mschwendt.fedorapeople.org/dubious_Obsoletes_in_Rawhide_20130821.txt


On to the second experiment. Ancient Obsoletes! Which Obsoletes tags
are too low for any current build in Fedora 16 up to Rawhide?
It's a shorter list:
http://mschwendt.fedorapeople.org/ancient_Obsoletes_in_Rawhide_20130821.txt

But hey, what the heck is stuff like this?

erlang
    erlang-0:R14B-04.1.fc16.i686  is oldest
    erlang < 0:R13B-04.5  obsoleted by  erlang-erl_interface-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-et-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-crypto-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-examples-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-sasl-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-compiler-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-inviso-0:R15B-03.3.fc18.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-reltool-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-syntax_tools-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-diameter-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-eldap-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-erts-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-webtool-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosNotification-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-parsetools-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-jinterface-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-dialyzer-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-gs-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosTime-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-toolbar-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-tools-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-tv-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-megaco-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-eunit-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-percept-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-ssh-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-asn1-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-erl_docgen-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-ic-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-edoc-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-wx-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-appmon-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-runtime_tools-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-orber-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-stdlib-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosFileTransfer-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosEvent-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-snmp-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-test_server-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosEventDomain-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosProperty-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-ssl-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-mnesia-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-debugger-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-pman-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-typer-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-otp_mibs-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-xmerl-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-kernel-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-common_test-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-hipe-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-cosTransactions-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-os_mon-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-inets-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-public_key-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-odbc-0:R16B-01.1.fc20.1.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-docbuilder-0:R14B-04.1.fc16.i686
    erlang < 0:R13B-04.5  obsoleted by  erlang-observer-0:R16B-01.1.fc20.1.i686

# repoquery --whatobsoletes erlang|wc -l
112


More information about the devel mailing list