Normal sort is not aware of rpm version comparison, neither about names and such, so would be nice to write some tools which would do that...
I wrote something similar for myself:
import sys import functools import rpm def split_nevra(nevra): nevr, arch = nevra.rsplit(".", 1) name, ev, release = nevr.rsplit("-", 2) if ":" in ev: epoch, version = ev.rsplit(":", 1) else: epoch = "" version = ev return name, epoch, version, release, arch def cmp_evr(s1, s2): _, e1, v1, r1, _ = split_nevra(s1) _, e2, v2, r2, _ = split_nevra(s2) return rpm.labelCompare((e1, v1, r1), (e2, v2, r2)) with open(sys.argv[1], "r") as f: lines = f.readlines() lines = sorted(sorted(sorted(lines, key=lambda x: split_nevra(x)[-1]), key=functools.cmp_to_key(cmp_evr)), key=lambda x: split_nevra(x)[0]) with open(sys.argv[1], "w") as f: f.writelines(lines)
Are you aware of rpmdev-sort which is already included in rpmdevtools?
rpmdev-sort
ohh, missed that...
Metadata Update from @ignatenkobrain: - Issue status updated to: Closed (was: Open)
Log in to comment on this ticket.