urldetect: Clean up Fedora version checking a bit

This commit is contained in:
Cole Robinson 2018-03-29 19:43:55 -04:00
parent 1269b549c4
commit fb9b82e02d
2 changed files with 26 additions and 30 deletions

View File

@ -256,12 +256,17 @@ class _OSDB(object):
return _sort(sortmap, sortpref=sortpref,
limit_point_releases=only_supported)
def latest_regex(self, regex):
"""
Return the latest distro name that matches the passed regex
"""
oses = [o.name for o in self.list_os() if re.match(regex, o.name)]
if not oses:
return None
return oses[0]
def latest_fedora_version(self):
for osinfo in self.list_os():
if (osinfo.name.startswith("fedora") and
"unknown" not in osinfo.name):
# First fedora* occurrence should be the newest
return osinfo.name
return self.latest_regex("fedora[0-9]+")
#####################

View File

@ -404,41 +404,32 @@ class FedoraDistro(RedHatDistro):
def _parse_fedora_version(self):
latest_variant = OSDB.latest_fedora_version()
if re.match("fedora[0-9]+", latest_variant):
latest_vernum = int(latest_variant[6:])
else:
latest_vernum = 99
logging.debug("Failed to parse version number from latest "
"fedora variant=%s. Setting vernum=%s",
latest_variant, latest_vernum)
# Result is guaranteed to match fedoraXX
latest_verint = int(latest_variant[6:])
ver = self.cache.treeinfo_version
if not ver:
verstr = self.cache.treeinfo_version
if not verstr:
logging.debug("No treeinfo version? Assume rawhide")
ver = "rawhide"
verstr = "rawhide"
# rawhide trees changed to use version=Rawhide in Apr 2016
if ver in ["development", "rawhide", "Rawhide"]:
return latest_vernum, latest_variant
if verstr in ["development", "rawhide", "Rawhide"]:
return latest_verint, latest_variant
# Dev versions can be like '23_Alpha'
if "_" in ver:
ver = ver.split("_")[0]
# Typical versions are like 'fedora-23'
vernum = str(ver).split("-")[0]
if vernum.isdigit():
vernum = int(vernum)
# treeinfo version is just an integer
if verstr.isdigit():
verint = int(verstr)
else:
logging.debug("Failed to parse version number from treeinfo "
"version=%s, using vernum=latest=%s", ver, latest_vernum)
vernum = latest_vernum
"version=%s, using latest=%s", verstr, latest_verint)
verint = latest_verint
if vernum > latest_vernum:
if verint > latest_verint:
os_variant = latest_variant
else:
os_variant = "fedora" + str(vernum)
os_variant = "fedora" + str(verint)
return vernum, os_variant
return verint, os_variant
def _detect_version(self):
self._version_number, self.os_variant = self._parse_fedora_version()