From 375dd6fa0178b7f798b5a7c89f76bcaa8448894f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= Date: Tue, 23 Mar 2021 20:29:12 +0000 Subject: [PATCH] Move udd tie breaker. --- ognibuild/debian/fix_build.py | 21 +-------------------- ognibuild/debian/udd.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/ognibuild/debian/fix_build.py b/ognibuild/debian/fix_build.py index bf563ab..c0507c6 100644 --- a/ognibuild/debian/fix_build.py +++ b/ognibuild/debian/fix_build.py @@ -441,28 +441,9 @@ def versioned_package_fixers(session, packaging_context): ] -def udd_tie_breaker(candidates): - # TODO(jelmer): Pick package based on what appears most commonly in - # build-depends{-indep,-arch} - try: - from .udd import UDD - except ModuleNotFoundError: - logging.warning('Unable to import UDD, not ranking by popcon') - return sorted(candidates, key=len)[0] - udd = UDD() - udd.connect() - names = {list(c.package_names())[0]: c for c in candidates} - winner = udd.get_most_popular(list(names.keys())) - if winner is None: - logging.warning( - 'No relevant popcon information found, not ranking by popcon') - return None - logging.info('Picked winner using popcon') - return names[winner] - - def apt_fixers(apt, packaging_context) -> List[BuildFixer]: from ..resolver.apt import AptResolver + from .udd import udd_tie_breaker apt_tie_breakers = [ partial(python_tie_breaker, packaging_context.tree, packaging_context.subpath), udd_tie_breaker, diff --git a/ognibuild/debian/udd.py b/ognibuild/debian/udd.py index e45a432..bd2f1ce 100644 --- a/ognibuild/debian/udd.py +++ b/ognibuild/debian/udd.py @@ -17,6 +17,8 @@ """Support for accessing UDD.""" +import logging + class UDD(object): @@ -37,3 +39,23 @@ class UDD(object): 'SELECT package FROM popcon WHERE package IN %s ORDER BY insts DESC LIMIT 1', (tuple(packages), )) return cursor.fetchone()[0] + + +def udd_tie_breaker(candidates): + # TODO(jelmer): Pick package based on what appears most commonly in + # build-depends{-indep,-arch} + try: + from .udd import UDD + except ModuleNotFoundError: + logging.warning('Unable to import UDD, not ranking by popcon') + return sorted(candidates, key=len)[0] + udd = UDD() + udd.connect() + names = {list(c.package_names())[0]: c for c in candidates} + winner = udd.get_most_popular(list(names.keys())) + if winner is None: + logging.warning( + 'No relevant popcon information found, not ranking by popcon') + return None + logging.info('Picked winner using popcon') + return names[winner]