From 45ccc3afdc8cf4bb5fdd441f8663777fce1acc81 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 29 Jul 2016 17:46:21 +0100 Subject: Handle the case where there is no current version Use the information from the 'best' version (Previously we would have been using the same information from setup.hint for all versions, so the precise version chosen perhaps doesn't make a big difference) --- calm/package.py | 24 +++++++++++++++--------- calm/pkg2html.py | 8 ++++---- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/calm/package.py b/calm/package.py index b0936bd..6dbceb4 100755 --- a/calm/package.py +++ b/calm/package.py @@ -483,6 +483,13 @@ def validate_packages(args, packages): if l in packages[p].override_hints: packages[p].stability[l] = packages[p].override_hints[l] + # identify a 'best' version to take certain information from: this is + # the curr version, if we have one, otherwise, the highest version. + if 'curr' in packages[p].stability: + packages[p].best_version = packages[p].stability['curr'] + else: + packages[p].best_version = sorted(packages[p].vermap.keys(), key=lambda v: SetupVersion(v), reverse=True)[0] + # the package must have some versions if not packages[p].stability: logging.error("package '%s' doesn't have any versions" % (p)) @@ -572,8 +579,7 @@ def validate_packages(args, packages): if re.match(r'^lib.*\d', install_p): continue - if 'curr' in packages[install_p].stability: - versions[packages[install_p].stability['curr']].append(install_p) + versions[packages[install_p].best_version].append(install_p) if len(versions) > 1: out = [] @@ -657,15 +663,15 @@ def write_setup_ini(args, packages, arch): # write package data print("\n@ %s" % p, file=f) - curr = packages[p].stability['curr'] - print("sdesc: %s" % packages[p].version_hints[curr]['sdesc'], file=f) + bv = packages[p].best_version + print("sdesc: %s" % packages[p].version_hints[bv]['sdesc'], file=f) - if 'ldesc' in packages[p].version_hints[curr]: - print("ldesc: %s" % packages[p].version_hints[curr]['ldesc'], file=f) + if 'ldesc' in packages[p].version_hints[bv]: + print("ldesc: %s" % packages[p].version_hints[bv]['ldesc'], file=f) # for historical reasons, category names must start with a capital # letter - category = ' '.join(map(upper_first_character, packages[p].version_hints[curr]['category'].split())) + category = ' '.join(map(upper_first_character, packages[p].version_hints[bv]['category'].split())) print("category: %s" % category, file=f) # compute the union of requires for all versions @@ -702,8 +708,8 @@ def write_setup_ini(args, packages, arch): else: logging.warning("package '%s' version '%s' has no source in external-source '%s'" % (p, version, s)) - if 'message' in packages[p].version_hints[curr]: - print("message: %s" % packages[p].version_hints[curr]['message'], file=f) + if 'message' in packages[p].version_hints[bv]: + print("message: %s" % packages[p].version_hints[bv]['message'], file=f) # helper function to output details for a particular tar file diff --git a/calm/pkg2html.py b/calm/pkg2html.py index 09dc396..f2e2cc6 100755 --- a/calm/pkg2html.py +++ b/calm/pkg2html.py @@ -134,8 +134,8 @@ def update_package_listings(args, packages, arch): if not args.dryrun: with open(html, 'w') as f: - curr = packages[p].stability['curr'] - header = p + ": " + packages[p].version_hints[curr]['sdesc'].replace('"', '') + bv = packages[p].best_version + header = p + ": " + packages[p].version_hints[bv]['sdesc'].replace('"', '') if fver.endswith('-src'): header = header + " (source code)" else: @@ -206,8 +206,8 @@ def update_package_listings(args, packages, arch): if packages[p].skip: continue - curr = packages[p].stability['curr'] - header = packages[p].version_hints[curr]['sdesc'].replace('"', '') + bv = packages[p].best_version + header = packages[p].version_hints[bv]['sdesc'].replace('"', '') print('' + p + '' + header + '', file=index) -- cgit v1.2.3