summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilles Dartiguelongue <eva@gentoo.org>2015-06-24 16:39:56 +0200
committerGilles Dartiguelongue <eva@gentoo.org>2015-06-25 14:46:23 +0200
commit9a712ebe4e2495134421a3df88ebe9962b6fa50e (patch)
treec05de78b29ed8fc8be3d10b919ef838347599c05
parentscripts/gen_archlist: rewrite max_kws logic (diff)
downloadgnome-9a712ebe4e2495134421a3df88ebe9962b6fa50e.tar.gz
gnome-9a712ebe4e2495134421a3df88ebe9962b6fa50e.tar.bz2
gnome-9a712ebe4e2495134421a3df88ebe9962b6fa50e.zip
scripts/gen_archlist: fix gen_cpv_kws to use arguments from command line
* Change the cpv_kw format to a tuple, there is no point in using a list. * Move/edit some lines around to expose logic in a clearer way. * Retrieve arguments from command line. * Add some comments.
-rwxr-xr-xscripts/gen_archlist.py47
1 files changed, 32 insertions, 15 deletions
diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py
index 15d5b028..6e00ec1e 100755
--- a/scripts/gen_archlist.py
+++ b/scripts/gen_archlist.py
@@ -63,7 +63,6 @@ STABLE = True
###############
# Preparation #
###############
-ALL_CPV_KWS = []
ARCHES = None
if STABLE:
@@ -299,10 +298,15 @@ def kws_wanted(current_kws, target_kws):
return wanted
-def gen_cpv_kws(cpv, kws_aim, depgraph):
- depgraph.add(cpv)
- cpv_kw_list = [[cpv, kws_wanted(get_kws(cpv, arches=ALL_ARCHES), kws_aim)]]
- if not cpv_kw_list[0][1]:
+def gen_cpv_kws(cpv, kws_aim, depgraph, check_dependencies, new_release):
+ """Build a list of CPV-Keywords.
+
+ If `check_dependencies` is True, append dependencies that need to be
+ updated to the list.
+ """
+ wanted = kws_wanted(get_kws(cpv, arches=ALL_ARCHES), kws_aim)
+
+ if not wanted:
# This happens when cpv has less keywords than kws_aim
# Usually happens when a dep was an || dep, or under a USE-flag
# which is masked in some profiles. We make all deps strict in
@@ -313,23 +317,33 @@ def gen_cpv_kws(cpv, kws_aim, depgraph):
debug('MEH')
nothing_to_be_done(cpv, type='dep')
return None
+
wanted = get_kws(cpv, arches=make_unstable(kws_aim))
- cpv_kw_list = [[cpv, wanted]]
- if CHECK_DEPS and not issystempackage(cpv):
- deps = get_best_deps(cpv, cpv_kw_list[0][1], release=NEW_REL)
+
+ cpv_kw_list = [(cpv, wanted)]
+
+ if check_dependencies and not issystempackage(cpv):
+ deps = get_best_deps(cpv, wanted, release=new_release)
if EXTREME_DEBUG:
debug('The deps of %s are %s' % (cpv, deps))
+
for dep in deps:
if dep in depgraph:
+ # XXX: assumes that `kws_aim` of previously added cpv is
+ # larger than current
continue
+
depgraph.add(dep)
- # Assumes that keyword deps are OK if STABLE
- dep_deps = gen_cpv_kws(dep, cpv_kw_list[0][1], depgraph)
+ # XXX: Assumes that dependencies are keyworded the same than cpv
+ dep_deps = gen_cpv_kws(dep, wanted, depgraph, check_dependencies,
+ new_release)
dep_deps.reverse()
- for i in dep_deps:
- # Make sure we don't already have the same [cpv, [kws]]
- if i not in ALL_CPV_KWS and i not in cpv_kw_list:
- cpv_kw_list.append(i)
+
+ for cpv_kw_tuple in dep_deps:
+ # Make sure we don't already have the same [(cpv, kws)]
+ if cpv_kw_tuple not in cpv_kw_list:
+ cpv_kw_list.append(cpv_kw_tuple)
+
cpv_kw_list.reverse()
return cpv_kw_list
@@ -533,7 +547,10 @@ def main():
nothing_to_be_done(cpv)
continue
- ALL_CPV_KWS += fix_nesting(gen_cpv_kws(cpv, kws_missing, set()))
+ ALL_CPV_KWS += fix_nesting(
+ gen_cpv_kws(cpv, kws_missing, set([cpv]),
+ args.check_dependencies, args.new_version)
+ )
if args.check_dependencies:
ALL_CPV_KWS.append(LINE_SEP)