Comment 3 for bug 1796932

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

On Bionic it finds ~27 Fedoras and then also plenty of rhel entries.

In fact on cosmic there are a few more releases known (newer OSDB).
But I think I have spotted what breaks it.

Cosmic:
idx 116 osobj.name fedora-unknown
idx 117 osobj.name fedora28
idx 118 osobj.name silverblue28
idx 119 osobj.name fedora27
idx 120 osobj.name fedora26
idx 121 osobj.name fedora25

Bionic:
idx 36 osobj.name fedora-unknown
idx 37 osobj.name fedora26
idx 38 osobj.name fedora25
idx 39 osobj.name fedora24
idx 40 osobj.name fedora23
idx 41 osobj.name fedora22

Those are the full lists and the unsorted silverblue28 in there is odd.

The code expects to find a list sorted to only contain fedora* and rhel* entries.
It makes sure that the first non-fedora is rhel and that fails.

This call fails
pref_list = OSDB.list_os(typename="linux", sortpref=["fedora", "rhel"])
Due to the full_list not being ordered correctly in Cosmic.
The silverblue28 entrey is clearly not at the "s" place in an alphanumeric sort.

That is from:
from virtinst import OSDB
from
virtinst/osdict.py:129

sortpref is defined as
:param sortpref: Sort these OSes at the front of the list

The sort algorithm uses osinfo.urldistro to "clump" same distros together.

/usr/share/osinfo/os/fedoraproject.org/silverblue-28.xml of package osinfo-db lists it as fedora27 derived and that makes it clump with fedora.

Works:
osinfo-db 0.20180226-1
Fails:
osinfo-db 0.20180929-1