def entropy_compare_package_tags(tag_a, tag_b): """ Compare two Entropy package tags using builtin cmp(). @param tag_a: Entropy package tag @type tag_a: string @param tag_b: Entropy package tag @type tag_b: string return: negative number if tag_a < tag_b, positive number if tag_a > tag_b. zero if tag_a == tag_b. rtype: int """ return const_cmp(_nat_sort_key(tag_a), _nat_sort_key(tag_b))
def entropy_compare_versions(ver_data, ver_data2): """ @description: compare two lists composed by [version,tag,revision] and [version,tag,revision] if ver_data > ver_data2 --> positive number if ver_data == ver_data2 --> 0 if ver_data < ver_data2 --> negative number @input package: ver_data[version,tag,rev] and ver_data2[version,tag,rev] @output: integer number """ a_ver, a_tag, a_rev = ver_data b_ver, b_tag, b_rev = ver_data2 # if both are tagged, check tag first rc = 0 if a_tag and b_tag: rc = const_cmp(a_tag, b_tag) if rc == 0: rc = compare_versions(a_ver, b_ver) if rc == 0: # check tag tag_cmp = entropy_compare_package_tags(a_tag, b_tag) if tag_cmp < 0: return -1 elif tag_cmp > 0: return 1 else: # check rev if a_rev > b_rev: return 1 elif a_rev < b_rev: return -1 return 0 return rc