package: Harmonize the way package versions are sorted
Instead of implementing the versions sorting in each package loader
prefer to have a base implementation in swh.loader.package.PackageLoader
class through the get_sorted_versions
method. It relies on the looseversion
module enabling to interact with heterogeneous version schemes which works
pretty well with a large majority of package loaders.
The get_default_version
method of the PackageLoader
class now also has a
base implementation returning the last element from the list returned by
the get_sorted_versions method
. As a consequence, each snapshot produced
by a package loader contains a HEAD
alias branch targeting the branch
for the highest version number of a package.
Both methods can be reimplemented in package loaders for special cases like debian for instance.
Also remove the use of the packaging
module to parse versions as it is
only dedicated to parse Python package versions.
Related to swh-lister#4711.