diff options
-rw-r--r-- | meta/classes/distrodata.bbclass | 73 |
1 files changed, 39 insertions, 34 deletions
diff --git a/meta/classes/distrodata.bbclass b/meta/classes/distrodata.bbclass index 5e34441610..c85f7b3474 100644 --- a/meta/classes/distrodata.bbclass +++ b/meta/classes/distrodata.bbclass @@ -261,12 +261,44 @@ python do_checkpkg() { from bb.utils import vercmp_string from bb.fetch2 import FetchError, NoMethodError, decodeurl - """first check whether a uri is provided""" - src_uri = (d.getVar('SRC_URI') or '').split() - if src_uri: - uri_type, _, _, _, _, _ = decodeurl(src_uri[0]) - else: - uri_type = "none" + def get_upstream_version_and_status(): + + # set if the upstream check fails reliably, e.g. absent git tags, or weird version format used on our or on upstream side. + upstream_version_unknown = localdata.getVar('UPSTREAM_VERSION_UNKNOWN') + # set if the upstream check cannot be reliably performed due to transient network failures, or server behaving weirdly. + # This one should be used sparingly, as it completely excludes a recipe from upstream checking. + upstream_check_unreliable = localdata.getVar('UPSTREAM_CHECK_UNRELIABLE') + + if upstream_check_unreliable == "1": + return "N/A", "CHECK_IS_UNRELIABLE" + + try: + uv = oe.recipeutils.get_recipe_upstream_version(localdata) + pupver = uv['version'] if uv['version'] else "N/A" + except Exception as e: + pupver = "N/A" + + if pupver == "N/A": + pstatus = "UNKNOWN" if upstream_version_unknown else "UNKNOWN_BROKEN" + else: + src_uri = (localdata.getVar('SRC_URI') or '').split() + if src_uri: + uri_type, _, _, _, _, _ = decodeurl(src_uri[0]) + else: + uri_type = "none" + pv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pversion, uri_type) + upv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pupver, uri_type) + + cmp = vercmp_string(pv, upv) + if cmp == -1: + pstatus = "UPDATE" if not upstream_version_unknown else "KNOWN_BROKEN" + elif cmp == 0: + pstatus = "MATCH" if not upstream_version_unknown else "KNOWN_BROKEN" + else: + pstatus = "UNKNOWN" if upstream_version_unknown else "UNKNOWN_BROKEN" + + return pupver, pstatus + """initialize log files.""" logpath = d.getVar('LOG_DIR') @@ -313,34 +345,7 @@ python do_checkpkg() { psrcuri = localdata.getVar('SRC_URI') maintainer = localdata.getVar('RECIPE_MAINTAINER') - """ Get upstream version version """ - pupver = "" - pstatus = "" - - try: - uv = oe.recipeutils.get_recipe_upstream_version(localdata) - - pupver = uv['version'] - except Exception as e: - if e is FetchError: - pstatus = "ErrAccess" - elif e is NoMethodError: - pstatus = "ErrUnsupportedProto" - else: - pstatus = "ErrUnknown" - - """Set upstream version status""" - if not pupver: - pupver = "N/A" - else: - pv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pversion, uri_type) - upv, _, _ = oe.recipeutils.get_recipe_pv_without_srcpv(pupver, uri_type) - - cmp = vercmp_string(pv, upv) - if cmp == -1: - pstatus = "UPDATE" - elif cmp == 0: - pstatus = "MATCH" + pupver, pstatus = get_upstream_version_and_status() if psrcuri: psrcuri = psrcuri.split()[0] |