[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 98f46bb384749baf895d520c5c8051e6e86e0abc Author: Gilles Dartiguelongue gentoo org> AuthorDate: Sun Sep 6 16:51:27 2015 + Commit: Gilles Dartiguelongue gentoo org> CommitDate: Sun Sep 6 16:51:27 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=98f46bb3 scripts/gen_archlist: drop some stable keywords As requested by Pacho in bug #559706, drop keywords of arches that are not considered for stabilization anymore. Gentoo-Bug: https://bugs.gentoo.org/559706 scripts/gen_archlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 7f677b1..a9fdb87 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -37,8 +37,8 @@ logger = logging.getLogger('gen_archlist') # # GNOME_OVERLAY = PORTDB.getRepositoryPath('gnome') portage.portdb.porttrees = [portage.settings['PORTDIR']] -STABLE_ARCHES = ('alpha', 'amd64', 'arm', 'hppa', 'ia64', 'm68k', 'ppc', - 'ppc64', 's390', 'sh', 'sparc', 'x86') +STABLE_ARCHES = ('alpha', 'amd64', 'arm', 'hppa', 'ia64', 'ppc', 'ppc64', + 'sparc', 'x86') UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', '~ppc', '~ppc64', '~s390', '~sh', '~sparc', '~x86', '~x86-fbsd')
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: e7d972f07e900247f39cdf0ae0e3b03d6e4f9eb4 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 11:23:40 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:45:55 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=e7d972f0 scripts/gen_archlist: create a clear main function scripts/gen_archlist.py | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 407ebbd..6369aa2 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -493,10 +493,9 @@ def prettify(cpv_kws): # Use the Functions # # # cpvs that will make it to the final list -if __name__ == __main__: -index = 0 -array = [] - +def main(): +Where the magic happens! +ALL_CPV_KWS = [] for i in open(CP_FILE).readlines(): cp = i[:-1] if cp.startswith('#') or cp.isspace() or not cp: @@ -535,3 +534,7 @@ if __name__ == __main__: for i in prettify(ALL_CPV_KWS): print i[0], flatten(i[1]) + + +if __name__ == '__main__': +main()
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 598edbfe3303a0e59bb7b92d38f5693b0aae7007 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 14:27:43 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:42 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=598edbfe scripts/gen_archlist: drop unused imports scripts/gen_archlist.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 1c4c027..e4597c6 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -27,8 +27,6 @@ import argparse import collections import logging import logging.config -import os -import sys import portage
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 6d936200f6324e340e823b7925c910d3c340b226 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 11:22:16 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:39 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=6d936200 scripts/gen_archlist: rewrite consolidates_dupes using sets scripts/gen_archlist.py | 63 ++--- 1 file changed, 18 insertions(+), 45 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 659c84e..d595df3 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -24,6 +24,7 @@ from __future__ import division import argparse +import collections import os import sys @@ -41,7 +42,6 @@ UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', '~x86-fbsd') ALL_ARCHES = STABLE_ARCHES + UNSTABLE_ARCHES SYSTEM_PACKAGES = [] -LINE_SEP = '' # Settings # @@ -348,52 +348,27 @@ def gen_cpv_kws(cpv, kws_aim, depgraph, check_dependencies, new_release): def consolidate_dupes(cpv_kws): - -Consolidate duplicate cpvs with differing keywords +Consolidate duplicate CPVs with differing keywords. -Cannot handle cps with different versions since we don't know if they are -inter-changeable +Cannot handle CPs with different versions since we don't know if they are +inter-changeable. -cpv_indices = {} - -# Find all indices of each cpv -for each in cpv_kws: -# Comments/whitespace carried over from original list -if type(each) is not list: -continue -else: -if each[0] not in cpv_indices: -cpv_indices[each[0]] = [] -cpv_indices[each[0]].append(cpv_kws.index(each)) +# Build maximum requested keywords for each cpv +cpv_kws_dict = collections.defaultdict(set) +for dep_set in cpv_kws: +for cpv, kws in dep_set: +cpv_kws_dict[cpv].update(kws) -# Replace the keywords of each cpv with the union of all keywords in the -# list belonging to this cpv -for each in cpv_kws: -# Ignore comments/whitespace carried over from original list -if type(each) is not list: -continue -kws = set() -for index in cpv_indices[each[0]]: -kws.update(cpv_kws[index][1]) -each[1] = list(kws) -each[1].sort() - -index = 0 -deduped_cpv_kws = cpv_kws[:] -deduped_cpv_kws.reverse() -while index len(deduped_cpv_kws): -item = deduped_cpv_kws[index] -if type(item) is not list: -index += 1 -continue -if deduped_cpv_kws.count(item) is 1: -index += 1 -else: -while deduped_cpv_kws.count(item) is not 1: -deduped_cpv_kws.remove(item) -deduped_cpv_kws.reverse() +# Update cpv with their maximum request keywords +clean_cpv_kws = [] +for dep_set in cpv_kws: +clean_cpv_kws.append([ +(cpv, cpv_kws_dict.pop(cpv)) +# Keep only first occurence of cpv +for cpv, _ in dep_set if cpv in cpv_kws_dict +]) -return deduped_cpv_kws +return clean_cpv_kws def get_per_slot_cpvs(cpvs): @@ -531,8 +506,6 @@ def main(): gen_cpv_kws(cpv, kws_missing, set([cpv]), args.check_dependencies, args.new_version) ) -if args.check_dependencies: -ALL_CPV_KWS.append(LINE_SEP) ALL_CPV_KWS = consolidate_dupes(ALL_CPV_KWS) if args.append_slots:
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 1d87c4f414d5a231b9951246b97daee36d8190a7 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 14:27:31 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:41 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=1d87c4f4 scripts/gen_archlist: switch logging to logging module The output changes a bit but thanks for dictConfig, it can be re-added with a proper formatter class later on. scripts/gen_archlist.py | 69 - 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index b362a5d..1c4c027 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -25,11 +25,15 @@ from __future__ import division, print_function import argparse import collections +import logging +import logging.config import os import sys import portage +logger = logging.getLogger('gen_archlist') + # # Constants # # @@ -92,13 +96,6 @@ def debug(*strings): ewarn(flatten(strings)) -def nothing_to_be_done(atom, type='cpv'): -if STABLE: -debug('%s %s: already stable, ignoring...' % (type, atom)) -else: -debug('%s %s: already keyworded, ignoring...' % (type, atom)) - - def make_unstable(kws): Transform `kws` into a list of unstable keywords. return set([ @@ -182,8 +179,7 @@ def get_best_deps(cpv, kws, release=None): cpvs = match_wanted_atoms(atom, release) if not cpvs: -if DEBUG: -debug('We encountered an irrelevant atom: %s' % atom) +logger.debug('Encountered an irrelevant atom: %s', atom) continue best_cpv_kws = ['', []] @@ -196,9 +192,8 @@ def get_best_deps(cpv, kws, release=None): ) if cur_unstable_kws.intersection(unstable_kws) != unstable_kws: best_cpv_kws[0] = 'none' -if DEBUG: -debug('Insufficient unstable keywords in: %s' % - candidate_cpv) +logger.debug('Insufficiant unstable keywords in: %s', + candidate_cpv) continue candidate_kws = get_kws(candidate_cpv, arches=kws) @@ -216,8 +211,8 @@ def get_best_deps(cpv, kws, release=None): best_cpv_kws = [candidate_cpv, []] if best_cpv_kws[0] == 'alreadythere': -if DEBUG: -nothing_to_be_done(atom, type='dep') +logger.debug('DEP %s is already %s, ignoring', atom, + 'stable' if STABLE else 'keyworded') continue elif best_cpv_kws[0] == 'none': continue @@ -324,8 +319,9 @@ def gen_cpv_kws(cpv, kws_aim, depgraph, check_dependencies, new_release): # So... let's just stabilize it on all arches we can, and ignore for # keywording since we have no idea about that. if not STABLE: -debug('MEH') -nothing_to_be_done(cpv, type='dep') +logger.warn('MEH') +logger.info('DEP %s is already %s, ignoring', cpv, +'stable' if STABLE else 'keyworded') return None wanted = get_kws(cpv, arches=make_unstable(kws_aim)) @@ -334,8 +330,7 @@ def gen_cpv_kws(cpv, kws_aim, depgraph, check_dependencies, new_release): 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)) +logger.debug('Dependencies of %s are: %s', cpv, deps) for dep in deps: if dep in depgraph: @@ -442,10 +437,8 @@ def main(): parser = argparse.ArgumentParser( description='Generate a stabilization request for multiple packages' ) -parser.add_argument('-d', '--debug', action='store_true', default=False, +parser.add_argument('-v', '--verbose', action='count', help='Make output more verbose') -parser.add_argument('--extreme-debug', action='store_true', default=False, -help='Make output even more verbose') parser.add_argument('--check-dependencies', action='store_true', default=False, help='Check dependencies are keyworded and if not,' @@ -463,6 +456,33 @@ def main(): ' to be stabilized') args = parser.parse_args() +args.verbose = min(max(args.verbose, 0), 2) +logging.config.dictConfig({ +'version': 1, +'disable_existing_loggers': True, +'formatters': { +'brief': {'format': '%(message)s'}, +}, +'handlers': { +'console': { +'class': 'logging.StreamHandler', +'level':
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: c33a3166cd55a0245663cbb1472ef04fda4c44f8 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 13:31:07 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:40 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=c33a3166 scripts/gen_archlist: better names for get_best_deps variables scripts/gen_archlist.py | 81 - 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 066b31e..b362a5d 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -169,50 +169,59 @@ def get_best_deps(cpv, kws, release=None): Returns a list of the best deps of a cpv, optionally matching a release, and with max of the specified keywords +# Take raw dependency strings and convert it to a list of atoms atoms = portage.portdb.aux_get(cpv, ['DEPEND', 'RDEPEND', 'PDEPEND']) atoms = ' '.join(atoms).split() # consolidate atoms atoms = list(set(atoms)) # de-duplicate + deps = set() -tmp = [] + for atom in atoms: -if atom.find('/') is -1: -# It's not a dep atom +if not portage.isvalidatom(atom): continue -ret = match_wanted_atoms(atom, release) -if not ret: + +cpvs = match_wanted_atoms(atom, release) +if not cpvs: if DEBUG: debug('We encountered an irrelevant atom: %s' % atom) continue -best_kws = ['', []] -for i in ret: + +best_cpv_kws = ['', []] +for candidate_cpv in cpvs: if STABLE: # Check that this version has unstable keywords -ukws = make_unstable(kws) -cur_ukws = make_unstable(get_kws(i, arches=kws | ukws)) -if cur_ukws.intersection(ukws) != ukws: -best_kws = 'none' +unstable_kws = make_unstable(kws) +cur_unstable_kws = make_unstable( +get_kws(candidate_cpv, arches=kws | unstable_kws) +) +if cur_unstable_kws.intersection(unstable_kws) != unstable_kws: +best_cpv_kws[0] = 'none' if DEBUG: -debug('Insufficient unstable keywords in: %s' % i) +debug('Insufficient unstable keywords in: %s' % + candidate_cpv) continue -cur_match_kws = get_kws(i, arches=kws) -if cur_match_kws == kws: -# This dep already has all keywords -best_kws = 'alreadythere' + +candidate_kws = get_kws(candidate_cpv, arches=kws) +if candidate_kws == kws: +# This dep already has all requested keywords +best_cpv_kws[0] = 'alreadythere' break + # Select the version which needs least new keywords -if len(cur_match_kws) len(best_kws[1]): -best_kws = [i, cur_match_kws] -elif not best_kws[0]: +if len(candidate_kws) len(best_cpv_kws[1]): +best_cpv_kws = [candidate_cpv, candidate_kws] +elif not best_cpv_kws[0]: # This means that none of the versions have any of the stable # keywords that *we checked* (i.e. kws). -best_kws = [i, []] -if best_kws == 'alreadythere': +best_cpv_kws = [candidate_cpv, []] + +if best_cpv_kws[0] == 'alreadythere': if DEBUG: nothing_to_be_done(atom, type='dep') continue -elif best_kws == 'none': +elif best_cpv_kws[0] == 'none': continue -elif not best_kws[0]: +elif not best_cpv_kws[0]: # We get this when the if STABLE: block above rejects everything. # This means that this atom does not have any versions with # unstable keywords matching the unstable keywords of the cpv @@ -220,8 +229,8 @@ def get_best_deps(cpv, kws, release=None): # This mostly happens because an || or use dep exists. However, we # make such deps strict while parsing # XXX: We arbitrarily select the most recent version for this case -deps.add(ret[0]) -elif not best_kws[1]: +deps.add(cpvs[0]) +elif not best_cpv_kws[1]: # This means that none of the versions have any of the stable # keywords that *we checked* (i.e. kws). Hence, we do another pass; # this time checking *all* keywords. @@ -229,20 +238,22 @@ def get_best_deps(cpv, kws, release=None): # XXX: We duplicate some of the things from the for loop above # We don't need to duplicate anything that caused a 'continue' or
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: a01ce56fddcd6b1f21233636b8661b4e4abdcd71 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Fri Jun 26 22:27:47 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:27:47 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=a01ce56f scripts/gen_archlist: fix case of local variable scripts/gen_archlist.py | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 21a196f..e6dc7bd 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -485,7 +485,7 @@ def main(): }, }) -ALL_CPV_KWS = [] +all_cpv_kws = [] for line in open(args.file).readlines(): cp = line.strip() @@ -522,16 +522,16 @@ def main(): 'stable' if STABLE else 'keyworded') continue -ALL_CPV_KWS.append( +all_cpv_kws.append( gen_cpv_kws(cpv, kws_missing, set([cpv]), args.check_dependencies, args.new_version) ) -ALL_CPV_KWS = consolidate_dupes(ALL_CPV_KWS) +all_cpv_kws = consolidate_dupes(all_cpv_kws) if args.append_slots: -ALL_CPV_KWS = append_slots(ALL_CPV_KWS) +all_cpv_kws = append_slots(all_cpv_kws) -print_cpv_kws(ALL_CPV_KWS) +print_cpv_kws(all_cpv_kws) if __name__ == '__main__':
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 3dd724f0698988b69d2c15aa502d181ca609943b Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:07:21 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:05 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=3dd724f0 scripts/gen_archlist: simplify functions and try to enhance documentation scripts/gen_archlist.py | 60 ++--- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index b21fba2..3ac9f88 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -101,14 +101,11 @@ def nothing_to_be_done(atom, type='cpv'): def make_unstable(kws): -Takes a keyword list, and returns a list with them all unstable -nkws = [] -for kw in kws: -if not kw.startswith('~'): -nkws.append('~'+kw) -else: -nkws.append(kw) -return nkws +Transform `kws` into a list of unstable keywords. +return [ +kwd if kwd.startswith('~') else '~' + kwd +for kwd in kws +] def belongs_release(cpv, release): @@ -127,14 +124,11 @@ def issystempackage(cpv): def get_kws(cpv, arches=ARCHES): - -Returns an array of KEYWORDS matching 'arches' - -kws = [] -for kw in portage.portdb.aux_get(cpv, ['KEYWORDS'])[0].split(): -if kw in arches: -kws.append(kw) -return kws +Return keywords of `cpv` filtered by `arches`. +return [ +kwd for kwd in portage.portdb.aux_get(cpv, ['KEYWORDS'])[0].split() +if kwd in arches +] def do_not_want(cpv, release=None): @@ -149,20 +143,20 @@ def do_not_want(cpv, release=None): def match_wanted_atoms(atom, release=None): +Return a list of CPV matching `atom`. + +If `release` is provided, CPVs are filtered against it. + +The list is sorted by descending order of version. -Given an atom and a release, return all matching wanted atoms ordered in -descending order of version - -atoms = [] # xmatch is stupid, and ignores ! in an atom... if atom.startswith('!'): return [] -for cpv in portage.portdb.xmatch('match-all', atom): -if do_not_want(cpv, release): -continue -atoms.append(cpv) -atoms.reverse() -return atoms + +return [ +cpv for cpv in reversed(portage.portdb.xmatch('match-all', atom)) +if not do_not_want(cpv, release) +] def get_best_deps(cpv, kws, release=None): @@ -278,15 +272,15 @@ def max_kws(cpv, release=None): # FIXME: This is broken -def kws_wanted(cpv_kws, prev_cpv_kws): -Generate a list of kws that need to be updated +def kws_wanted(current_kws, target_kws): +Generate a list of kws that need to be updated. wanted = [] -for kw in prev_cpv_kws: -if kw not in cpv_kws: -if STABLE and '~'+kw not in cpv_kws: -# Ignore if no keywords at all +for kwd in target_kws: +if kwd not in current_kws: +if STABLE and '~' + kwd not in current_kws: +# Skip stable keywords with no corresponding unstable keyword continue -wanted.append(kw) +wanted.append(kwd) return wanted
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 19c52766c8ca16879f8b03b3f6a9b85c0865a04f Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 12:47:22 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:40 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=19c52766 scripts/gen_archlist: make prettify the print function No need for another function call at this point, everything that happens in prettify is only intended for output. scripts/gen_archlist.py | 75 ++--- 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index f9cf432..066b31e 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -21,7 +21,7 @@ # * Support recursive checking of needed keywords in deps # -from __future__ import division +from __future__ import division, print_function import argparse import collections @@ -392,52 +392,34 @@ def append_slots(cpv_kws): return slotifyed_cpv_kws -# FIXME: This is broken -def prettify(cpv_kws): -Takes a list of [cpv, [kws]] and prettifies it +def print_cpv_kws(cpv_kws): +Takes a list of [cpv, [kws]] and prettifies it max_len = 0 -kws_all = [] -pretty_list = [] -cpv_block_size = 0 +kws_all = set() -for each in cpv_kws: -# Ignore comments/whitespace carried over from original list -if type(each) is not list: -continue -# Find the atom with max length (for output formatting) -if len(each[0]) max_len: -max_len = len(each[0]) -# Find the set of all kws listed -for kw in each[1]: -if kw not in kws_all: -kws_all.append(kw) -kws_all.sort() - -for each in cpv_kws: -# Handle comments/whitespace carried over from original list -if type(each) is not list: -# If the prev cpv block has just one line, don't print an extra \n -# XXX: This code relies on blocks of dep-cpvs being separated by \n -if CHECK_DEPS and cpv_block_size is 1: -cpv_block_size = 0 -continue -pretty_list.append([each, []]) -cpv_block_size = 0 -continue -# The size of the current cpv list block -cpv_block_size += 1 -# Pad the cpvs with space -each[0] += n_sep(max_len - len(each[0])) -for i in range(0, len(kws_all)): -if i == len(each[1]): -# Prevent an IndexError -# This is a problem in the algo I selected -each[1].append('') -if each[1][i] != kws_all[i]: -# If no arch, insert space -each[1].insert(i, n_sep(len(kws_all[i]))) -pretty_list.append([each[0], each[1]]) -return pretty_list +for dep_set in cpv_kws: +for cpv, kws in dep_set: +# Find the atom with max length (for output formatting) +max_len = max(max_len, len(cpv)) +# Find the set of all kws listed +kws_all.update(kws) + +for dep_set in cpv_kws: +for cpv, kws in dep_set: +pretty_line = cpv + ' ' * (max_len - len(cpv)) + +for kwd in sorted(kws_all): +if kwd in kws: +pretty_line += ' ' + kwd +else: +pretty_line += ' ' + ' ' * len(kwd) + +print(pretty_line) + +if len(dep_set) 1: +print() + +return # @@ -511,8 +493,7 @@ def main(): if args.append_slots: ALL_CPV_KWS = append_slots(ALL_CPV_KWS) -for i in prettify(ALL_CPV_KWS): -print i[0], flatten(i[1]) +print_cpv_kws(ALL_CPV_KWS) if __name__ == '__main__':
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 5451ec12c9fc4363c7f812c2fc3da253d8ffa306 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 11:26:24 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:00 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=5451ec12 scripts/gen_archlist: move dev style configuration to argparse This commit actually breaks the script since some functions do not have proper arguments to handle configuration from main entry-point. scripts/gen_archlist.py | 78 - 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 6369aa2..b21fba2 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -23,6 +23,7 @@ from __future__ import division +import argparse import os import sys @@ -50,36 +51,19 @@ EXTREME_DEBUG = False CHECK_DEPS = False APPEND_SLOTS = False # Check for stable keywords +# This is intended to switch between keywordreq (for ~arch) +# and stablereq (for moving from ~arch to arch) STABLE = True +# if not STABLE: +# print 'Currently broken for anything except STABLEREQ' +# print 'Please set STABLE to True' +# sys.exit(1) + ### # Preparation # ### ALL_CPV_KWS = [] -OLD_REL = None -NEW_REL = None - -if __name__ == __main__: -try: -CP_FILE = sys.argv[1] # File which has the cp list -except IndexError: -print Usage: %s file [old_rel] [new_rel] - -Where file is a file with a category/package list - [old_rel] is an optional argument for specifying which release cycle -to use to get the cpv which has the keyword we need -i.e., which cpvs will we get the list of keywords from? - [new_rel] is an optional argument for specifying which release cycle -to use to get the latest cpv on which we want keywords -i.e., which cpvs will go in the list? -WARNING: the logic for old_rel new_rel is very incomplete. See TODO - % sys.argv[0] -sys.exit(0) - -if len(sys.argv) 2: -OLD_REL = sys.argv[2] -if len(sys.argv) 3: -NEW_REL = sys.argv[3] ARCHES = None if STABLE: @@ -87,17 +71,6 @@ if STABLE: else: ARCHES = UNSTABLE_ARCHES -if 'CHECK_DEPS' in os.environ: -CHECK_DEPS = os.environ['CHECK_DEPS'] - -if 'APPEND_SLOTS' in os.environ: -APPEND_SLOTS = os.environ['APPEND_SLOTS'] - -if not STABLE: -print 'Currently broken for anything except STABLEREQ' -print 'Please set STABLE to True' -sys.exit(1) - # Define Functions # @@ -495,8 +468,32 @@ def prettify(cpv_kws): # cpvs that will make it to the final list def main(): Where the magic happens! +parser = argparse.ArgumentParser( +description='Generate a stabilization request for multiple packages' +) +parser.add_argument('-d', '--debug', action='store_true', default=False, +help='Make output more verbose') +parser.add_argument('--extreme-debug', action='store_true', default=False, +help='Make output even more verbose') +parser.add_argument('--check-dependencies', +action='store_true', default=False, +help='Check dependencies are keyworded and if not,' + ' add them to the list') +parser.add_argument('--append-slots', action='store_true', default=False, +help='Append slots to CPVs output') +parser.add_argument('file', help='File to read CP from') +parser.add_argument('old_version', nargs='?', +help='An optional argument specifying which release' + ' cycle to use to get CPVs which has the' + ' reference keywords for stabilization.') +parser.add_argument('new_version', nargs='?', +help='An optional argument specifying which release' + ' cycle to use to get the latest CPVs that needs' + ' to be stabilized') +args = parser.parse_args() + ALL_CPV_KWS = [] -for i in open(CP_FILE).readlines(): +for i in open(args.file).readlines(): cp = i[:-1] if cp.startswith('#') or cp.isspace() or not cp: ALL_CPV_KWS.append(cp) @@ -508,13 +505,14 @@ def main(): atoms = [cp] else: # Get all the atoms matching the given cp -cpvs = match_wanted_atoms(cp, release=NEW_REL) +cpvs = match_wanted_atoms(cp, release=args.new_version) for cpv in get_per_slot_cpvs(cpvs): if not cpv: debug('%s: Invalid cpv' % cpv) continue -kws_missing = max_kws(cpv, release=OLD_REL) + +kws_missing = max_kws(cpv, release=args.old_version) if kws_missing == []:
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 6ce2657c1052fa500cc5e84b51ce88b06b96098f Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Fri Jun 26 22:29:42 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:29:42 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=6ce2657c scripts/gen_archlist: remove dead code scripts/gen_archlist.py | 21 - 1 file changed, 21 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index e6dc7bd..7f677b1 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -48,10 +48,7 @@ SYSTEM_PACKAGES = [] # Settings # -DEBUG = False -EXTREME_DEBUG = False CHECK_DEPS = False -APPEND_SLOTS = False # Check for stable keywords # This is intended to switch between keywordreq (for ~arch) # and stablereq (for moving from ~arch to arch) @@ -76,24 +73,6 @@ else: # Define Functions # -def flatten(list, sep=' '): -Given a list, returns a flat string separated by 'sep' -return sep.join(list) - - -def n_sep(n, sep=' '): -tmp = '' -for i in range(0, n): -tmp += sep -return tmp - - -def debug(*strings): -from portage.output import EOutput -ewarn = EOutput().ewarn -ewarn(flatten(strings)) - - def make_unstable(kws): Transform `kws` into a list of unstable keywords. return set([
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 24bd1b67e381e6aa5bff5e597bd3a96c98f4f4a7 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 07:57:48 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:23 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=24bd1b67 scripts/gen_archlist: use sets for manipulating keywords Avoids logic like if bla not in list then add it when it is done by sets already. Sorting can be applied when printing. scripts/gen_archlist.py | 27 +-- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 6e00ec1..f2a68e5 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -101,10 +101,10 @@ def nothing_to_be_done(atom, type='cpv'): def make_unstable(kws): Transform `kws` into a list of unstable keywords. -return [ +return set([ kwd if kwd.startswith('~') else '~' + kwd for kwd in kws -] +]) def belongs_release(cpv, release): @@ -124,10 +124,10 @@ def issystempackage(cpv): def get_kws(cpv, arches=ARCHES): Return keywords of `cpv` filtered by `arches`. -return [ +return set([ kwd for kwd in portage.portdb.aux_get(cpv, ['KEYWORDS'])[0].split() if kwd in arches -] +]) def can_stabilize_cpv(cpv, release=None): @@ -188,14 +188,14 @@ def get_best_deps(cpv, kws, release=None): if STABLE: # Check that this version has unstable keywords ukws = make_unstable(kws) -cur_ukws = set(make_unstable(get_kws(i, arches=kws+ukws))) -if cur_ukws.intersection(ukws) != set(ukws): +cur_ukws = make_unstable(get_kws(i, arches=kws | ukws)) +if cur_ukws.intersection(ukws) != ukws: best_kws = 'none' if DEBUG: debug('Insufficient unstable keywords in: %s' % i) continue cur_match_kws = get_kws(i, arches=kws) -if set(cur_match_kws) == set(kws): +if cur_match_kws == kws: # This dep already has all keywords best_kws = 'alreadythere' break @@ -279,7 +279,7 @@ def max_kws(cpv, release=None): missing_kws.add(kwd) if maximum_kws: -return sorted(missing_kws) +return missing_kws else: # No cpv has the keywords we need return None @@ -288,13 +288,12 @@ def max_kws(cpv, release=None): # FIXME: This is broken def kws_wanted(current_kws, target_kws): Generate a list of kws that need to be updated. -wanted = [] +wanted = set() for kwd in target_kws: -if kwd not in current_kws: -if STABLE and '~' + kwd not in current_kws: -# Skip stable keywords with no corresponding unstable keyword -continue -wanted.append(kwd) +if STABLE and '~' + kwd not in current_kws: +# Skip stable keywords with no corresponding unstable keyword +continue +wanted.add(kwd) return wanted
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 4542a3fc2042bb029e0a7b124724c6af41d6ff87 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:08:20 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:14 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=4542a3fc scripts/gen_archlist: rename do_not_want function Give it a better name of split logic down in multiple lines, it is easier to read that a kilometric if line. Logic was inverted to avoid double negation in match_wanted_atoms function. scripts/gen_archlist.py | 24 +++- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 9a74d21..9b60f03 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -131,15 +131,21 @@ def get_kws(cpv, arches=ARCHES): ] -def do_not_want(cpv, release=None): - -Check if a package atom is p.masked or has empty keywords, or does not -belong to a release +def can_stabilize_cpv(cpv, release=None): +Whether `cpv` matches stabilization criteria. + +`cpv` must: +* belong to the release +* not be p.masked +* have keywords -if release and not belongs_release(cpv, release) or not \ -portage.portdb.visible([cpv]) or not get_kws(cpv, arches=ALL_ARCHES): -return True -return False +if release and not belongs_release(cpv, release): +return False +if not portage.portdb.visible([cpv]): +return False +if not get_kws(cpv, arches=ALL_ARCHES): +return False +return True def match_wanted_atoms(atom, release=None): @@ -155,7 +161,7 @@ def match_wanted_atoms(atom, release=None): return [ cpv for cpv in reversed(portage.portdb.xmatch('match-all', atom)) -if not do_not_want(cpv, release) +if can_stabilize_cpv(cpv, release) ]
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 30e08cc1e869e0234aaacd56ed93242ba138b31d Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 11:22:34 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:24 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=30e08cc1 scripts/gen_archlist: remove fix_nesting function Could not figure out if this was needed at all. At least it appears it is not useful anymore. Kill its weird logic with fire. scripts/gen_archlist.py | 21 + 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index f2a68e5..659c84e 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -347,25 +347,6 @@ def gen_cpv_kws(cpv, kws_aim, depgraph, check_dependencies, new_release): return cpv_kw_list -def fix_nesting(nested_list): -Takes a list of unknown nesting depth, and gives a nice list with each -element of the form [cpv, [kws]] -index = 0 -cpv_index = -1 -nice_list = [] -# Has an unpredictable nesting of lists; so we flatten it... -flat_list = portage.flatten(nested_list) -# ... and re-create a nice list for us to use -while index len(flat_list): -if portage.catpkgsplit(flat_list[index]): -cpv_index += 1 -nice_list.append([flat_list[index], []]) -else: -nice_list[cpv_index][1].append(flat_list[index]) -index += 1 -return nice_list - - def consolidate_dupes(cpv_kws): Consolidate duplicate cpvs with differing keywords @@ -546,7 +527,7 @@ def main(): nothing_to_be_done(cpv) continue -ALL_CPV_KWS += fix_nesting( +ALL_CPV_KWS.append( gen_cpv_kws(cpv, kws_missing, set([cpv]), args.check_dependencies, args.new_version) )
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 813f7fbce53580a4e7302f9d4ce6f40e5410d965 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 13:17:47 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:19 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=813f7fbc scripts/gen_archlist: rewrite max_kws logic Not sure if everything is still the same but it got more comments and looks easier to read. scripts/gen_archlist.py | 53 + 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 9b60f03..15d5b02 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -248,8 +248,9 @@ def get_best_deps(cpv, kws, release=None): def max_kws(cpv, release=None): - -Given a cpv, find the intersection of most keywords it can have and +Build `cpv` maximum expected keyword coverage. + +Find the intersection of most keywords it can have and keywords it has, and returns a sorted list If STABLE; makes sure it has unstable keywords right now @@ -257,21 +258,29 @@ def max_kws(cpv, release=None): Returns [] if current cpv has best keywords Returns None if no cpv has keywords -current_kws = get_kws(cpv, arches=ALL_ARCHES) -maximum_kws = [] # Maximum keywords that a cpv has -missing_kws = [] -for atom in match_wanted_atoms('='+cpv, release): +current_kws = set(get_kws(cpv, arches=ALL_ARCHES)) +maximum_kws = set() # Maximum keywords that a cpv has +missing_kws = set() + +# Build best keyword coverage for `cpv` +for atom in match_wanted_atoms('=' + cpv, release): kws = get_kws(atom) -if len(kws) len(maximum_kws): -maximum_kws = kws -for kw in kws: -if kw not in missing_kws+current_kws: -if STABLE and '~'+kw not in current_kws: -continue -missing_kws.append(kw) -missing_kws.sort() -if maximum_kws != []: -return missing_kws + +# Consider stable keywords only +if STABLE: +kws = [kwd for kwd in kws if not kwd.startswith('~')] + +maximum_kws.update(set(kws)) + +# Build list of keywords missing to achieve best coverage +for kwd in maximum_kws: +# Skip stable keywords with no corresponding unstable keyword in `cpv` +if STABLE and '~' + kwd not in current_kws: +continue +missing_kws.add(kwd) + +if maximum_kws: +return sorted(missing_kws) else: # No cpv has the keywords we need return None @@ -513,15 +522,17 @@ def main(): continue kws_missing = max_kws(cpv, release=args.old_version) -if kws_missing == []: -# Current cpv has the max keywords = nothing to do -nothing_to_be_done(cpv) -continue -elif kws_missing is None: +if kws_missing is None: debug('No versions with stable keywords for %s' % cpv) # No cpv with stable keywords = select latest arches = make_unstable(ARCHES) kws_missing = [kw[1:] for kw in get_kws(cpv, arches)] + +elif not kws_missing: +# Current cpv has the max keywords = nothing to do +nothing_to_be_done(cpv) +continue + ALL_CPV_KWS += fix_nesting(gen_cpv_kws(cpv, kws_missing, set())) if args.check_dependencies: ALL_CPV_KWS.append(LINE_SEP)
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: d1f4f46de1234dbf750ab8815dcf2aa6a827eb4d Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 09:35:49 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:45:47 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=d1f4f46d scripts/gen_archlist: apply PEP8 rules scripts/gen_archlist.py | 145 ++-- 1 file changed, 90 insertions(+), 55 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index fa26b90..407ebbd 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -10,10 +10,10 @@ # You can use test-data/package-list to test the script out. # # NOTE: This script assumes that there are no broken keyword deps -# +# # BUGS: -# * belongs_release() is a very primitive function, which means usage of old/new -# release numbers gives misleading output +# * belongs_release() is a very primitive function, which means usage of +# old/new release numbers gives misleading output # * Will show multiple versions of the same package in the output sometimes. # This happens when a cp is specified in the cpv list, and is resolved as # a dependency as well. @@ -22,25 +22,29 @@ # from __future__ import division -import os, sys + +import os +import sys + import portage -### -## Constants ## -### -#GNOME_OVERLAY = PORTDB.getRepositoryPath('gnome') +# +# Constants # +# +# GNOME_OVERLAY = PORTDB.getRepositoryPath('gnome') portage.portdb.porttrees = [portage.settings['PORTDIR']] STABLE_ARCHES = ('alpha', 'amd64', 'arm', 'hppa', 'ia64', 'm68k', 'ppc', -'ppc64', 's390', 'sh', 'sparc', 'x86') -UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', '~ppc', -'~ppc64', '~s390', '~sh', '~sparc', '~x86', '~x86-fbsd') -ALL_ARCHES = STABLE_ARCHES+UNSTABLE_ARCHES + 'ppc64', 's390', 'sh', 'sparc', 'x86') +UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', + '~ppc', '~ppc64', '~s390', '~sh', '~sparc', '~x86', + '~x86-fbsd') +ALL_ARCHES = STABLE_ARCHES + UNSTABLE_ARCHES SYSTEM_PACKAGES = [] LINE_SEP = '' -## -## Settings ## -## + +# Settings # + DEBUG = False EXTREME_DEBUG = False CHECK_DEPS = False @@ -48,40 +52,45 @@ APPEND_SLOTS = False # Check for stable keywords STABLE = True -# -## Preparation ## -# +### +# Preparation # +### ALL_CPV_KWS = [] OLD_REL = None NEW_REL = None + if __name__ == __main__: try: -CP_FILE = sys.argv[1] # File which has the cp list +CP_FILE = sys.argv[1] # File which has the cp list except IndexError: -print 'Usage: %s file [old_rel] [new_rel]' % sys.argv[0] -print 'Where file is a file with a category/package list' -print ' [old_rel] is an optional argument for specifying which release cycle' -print 'to use to get the cpv which has the keyword we need' -print 'i.e., which cpvs will we get the list of keywords from?' -print ' [new_rel] is an optional argument for specifying which release cycle' -print 'to use to get the latest cpv on which we want keywords' -print 'i.e., which cpvs will go in the list?' -print 'WARNING: the logic for old_rel new_rel is very incomplete. See TODO' +print Usage: %s file [old_rel] [new_rel] + +Where file is a file with a category/package list + [old_rel] is an optional argument for specifying which release cycle +to use to get the cpv which has the keyword we need +i.e., which cpvs will we get the list of keywords from? + [new_rel] is an optional argument for specifying which release cycle +to use to get the latest cpv on which we want keywords +i.e., which cpvs will go in the list? +WARNING: the logic for old_rel new_rel is very incomplete. See TODO + % sys.argv[0] sys.exit(0) + if len(sys.argv) 2: OLD_REL = sys.argv[2] if len(sys.argv) 3: NEW_REL = sys.argv[3] + ARCHES = None if STABLE: ARCHES = STABLE_ARCHES else: ARCHES = UNSTABLE_ARCHES -if os.environ.has_key('CHECK_DEPS'): +if 'CHECK_DEPS' in os.environ: CHECK_DEPS = os.environ['CHECK_DEPS'] -if os.environ.has_key('APPEND_SLOTS'): +if 'APPEND_SLOTS' in os.environ: APPEND_SLOTS = os.environ['APPEND_SLOTS'] if not STABLE: @@ -89,30 +98,35 @@ if not STABLE: print 'Please set STABLE to True' sys.exit(1) -## -## Define Functions ## -## + + +# Define Functions # + def flatten(list, sep=' '): Given a list, returns a flat string separated by 'sep' return sep.join(list) + def n_sep(n,
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 9a712ebe4e2495134421a3df88ebe9962b6fa50e Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 14:39:56 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:23 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=9a712ebe 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. scripts/gen_archlist.py | 47 --- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 15d5b02..6e00ec1 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)
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 9e2189f5a6efd3c0ab7d1f386f532d3d42b18734 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:07:39 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Thu Jun 25 12:46:09 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=9e2189f5 scripts/gen_archlist: fix belongs_release get_ver is undefined, I wonder how this could ever work. scripts/gen_archlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 3ac9f88..9a74d21 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -109,11 +109,11 @@ def make_unstable(kws): def belongs_release(cpv, release): -Check if the given cpv belongs to the given release +Check if `cpv` belongs to the release `release`. # FIXME: This failure function needs better logic if CHECK_DEPS: raise Exception('This function is utterly useless with RECURSIVE mode') -return get_ver(cpv).startswith(release) +return portage.versions.cpv_getversion(cpv).startswith(release) def issystempackage(cpv):
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 8590d8da1adf4445f928c940c2959d2a6035bdd8 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Fri Jun 26 22:08:58 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:42 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=8590d8da scripts/gen_archlist: cosmetics scripts/gen_archlist.py | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index e4597c6..7c41a9c 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -376,7 +376,11 @@ def consolidate_dupes(cpv_kws): def get_per_slot_cpvs(cpvs): -Classify the given cpvs into slots, and yield the best atom for each slot +Return best CPV per slot. + +Classify the CPVs into slots, and yield the best atom for each slot. +This only works with a pre-sorted list as returned by `match_wanted_atoms`. + slots = set() for cpv in cpvs: slot = portage.portage.portdb.aux_get(cpv, ['SLOT'])[0] @@ -387,9 +391,9 @@ def get_per_slot_cpvs(cpvs): def append_slots(cpv_kws): -Append slots at the end of cpv atoms +Append slots at the end of cpv atoms slotifyed_cpv_kws = [] -for (cpv, kws) in cpv_kws: +for cpv, kws in cpv_kws: slot = portage.portage.portdb.aux_get(cpv, ['SLOT'])[0] cpv = %s:%s % (cpv, slot) slotifyed_cpv_kws.append([cpv, kws]) @@ -489,11 +493,13 @@ def main(): continue if cp.find('#') is not -1: raise Exception('Inline comments are not supported') + +# Convert line to CPV(s) if portage.catpkgsplit(cp): # cat/pkg is already a categ/pkg-ver cpvs = [cp] else: -# Get all the atoms matching the given cp +# Get all the atoms matching the given CP cpvs = match_wanted_atoms(cp, release=args.new_version) for cpv in get_per_slot_cpvs(cpvs):
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: bb81b5c9415b3d70f508a77ba1f79f86c5b4a79c Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Fri Jun 26 22:09:54 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:43 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=bb81b5c9 scripts/gen_archlist: do not add skipped lines to ALL_CPV_KWS Why in the world would we want to do that. scripts/gen_archlist.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 7c41a9c..1633dfa 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -489,7 +489,6 @@ def main(): for i in open(args.file).readlines(): cp = i[:-1] if cp.startswith('#') or cp.isspace() or not cp: -ALL_CPV_KWS.append(cp) continue if cp.find('#') is not -1: raise Exception('Inline comments are not supported')
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 86f443210464a83721be581cc00cfe08dc5632bd Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Fri Jun 26 22:10:42 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:43 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=86f44321 scripts/gen_archlist: simplify logic of file parsing scripts/gen_archlist.py | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 1633dfa..21a196f 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -486,11 +486,14 @@ def main(): }) ALL_CPV_KWS = [] -for i in open(args.file).readlines(): -cp = i[:-1] -if cp.startswith('#') or cp.isspace() or not cp: +for line in open(args.file).readlines(): +cp = line.strip() + +# Filter useless lines +if not cp or cp.startswith('#'): continue -if cp.find('#') is not -1: + +if '#' in cp: raise Exception('Inline comments are not supported') # Convert line to CPV(s)
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 4571219b191c1786d7ff4b0e5a6ade19e5c30875 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Thu Jun 25 11:26:43 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Fri Jun 26 22:14:39 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=4571219b scripts/gen_archlist: add full CPV lines to our workset Probably an overlooked rename. scripts/gen_archlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index d595df3..f9cf432 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -479,8 +479,8 @@ def main(): if cp.find('#') is not -1: raise Exception('Inline comments are not supported') if portage.catpkgsplit(cp): -# categ/pkg is already a categ/pkg-ver -atoms = [cp] +# cat/pkg is already a categ/pkg-ver +cpvs = [cp] else: # Get all the atoms matching the given cp cpvs = match_wanted_atoms(cp, release=args.new_version)
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 3e63b913e81f842dfac1b76bb9a5d1fdcbcd5236 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 09:35:49 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:11:10 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=3e63b913 scripts/gen_archlist: Apply PEP8 rules scripts/gen_archlist.py | 145 ++-- 1 file changed, 90 insertions(+), 55 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index fa26b90..407ebbd 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -10,10 +10,10 @@ # You can use test-data/package-list to test the script out. # # NOTE: This script assumes that there are no broken keyword deps -# +# # BUGS: -# * belongs_release() is a very primitive function, which means usage of old/new -# release numbers gives misleading output +# * belongs_release() is a very primitive function, which means usage of +# old/new release numbers gives misleading output # * Will show multiple versions of the same package in the output sometimes. # This happens when a cp is specified in the cpv list, and is resolved as # a dependency as well. @@ -22,25 +22,29 @@ # from __future__ import division -import os, sys + +import os +import sys + import portage -### -## Constants ## -### -#GNOME_OVERLAY = PORTDB.getRepositoryPath('gnome') +# +# Constants # +# +# GNOME_OVERLAY = PORTDB.getRepositoryPath('gnome') portage.portdb.porttrees = [portage.settings['PORTDIR']] STABLE_ARCHES = ('alpha', 'amd64', 'arm', 'hppa', 'ia64', 'm68k', 'ppc', -'ppc64', 's390', 'sh', 'sparc', 'x86') -UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', '~ppc', -'~ppc64', '~s390', '~sh', '~sparc', '~x86', '~x86-fbsd') -ALL_ARCHES = STABLE_ARCHES+UNSTABLE_ARCHES + 'ppc64', 's390', 'sh', 'sparc', 'x86') +UNSTABLE_ARCHES = ('~alpha', '~amd64', '~arm', '~hppa', '~ia64', '~m68k', + '~ppc', '~ppc64', '~s390', '~sh', '~sparc', '~x86', + '~x86-fbsd') +ALL_ARCHES = STABLE_ARCHES + UNSTABLE_ARCHES SYSTEM_PACKAGES = [] LINE_SEP = '' -## -## Settings ## -## + +# Settings # + DEBUG = False EXTREME_DEBUG = False CHECK_DEPS = False @@ -48,40 +52,45 @@ APPEND_SLOTS = False # Check for stable keywords STABLE = True -# -## Preparation ## -# +### +# Preparation # +### ALL_CPV_KWS = [] OLD_REL = None NEW_REL = None + if __name__ == __main__: try: -CP_FILE = sys.argv[1] # File which has the cp list +CP_FILE = sys.argv[1] # File which has the cp list except IndexError: -print 'Usage: %s file [old_rel] [new_rel]' % sys.argv[0] -print 'Where file is a file with a category/package list' -print ' [old_rel] is an optional argument for specifying which release cycle' -print 'to use to get the cpv which has the keyword we need' -print 'i.e., which cpvs will we get the list of keywords from?' -print ' [new_rel] is an optional argument for specifying which release cycle' -print 'to use to get the latest cpv on which we want keywords' -print 'i.e., which cpvs will go in the list?' -print 'WARNING: the logic for old_rel new_rel is very incomplete. See TODO' +print Usage: %s file [old_rel] [new_rel] + +Where file is a file with a category/package list + [old_rel] is an optional argument for specifying which release cycle +to use to get the cpv which has the keyword we need +i.e., which cpvs will we get the list of keywords from? + [new_rel] is an optional argument for specifying which release cycle +to use to get the latest cpv on which we want keywords +i.e., which cpvs will go in the list? +WARNING: the logic for old_rel new_rel is very incomplete. See TODO + % sys.argv[0] sys.exit(0) + if len(sys.argv) 2: OLD_REL = sys.argv[2] if len(sys.argv) 3: NEW_REL = sys.argv[3] + ARCHES = None if STABLE: ARCHES = STABLE_ARCHES else: ARCHES = UNSTABLE_ARCHES -if os.environ.has_key('CHECK_DEPS'): +if 'CHECK_DEPS' in os.environ: CHECK_DEPS = os.environ['CHECK_DEPS'] -if os.environ.has_key('APPEND_SLOTS'): +if 'APPEND_SLOTS' in os.environ: APPEND_SLOTS = os.environ['APPEND_SLOTS'] if not STABLE: @@ -89,30 +98,35 @@ if not STABLE: print 'Please set STABLE to True' sys.exit(1) -## -## Define Functions ## -## + + +# Define Functions # + def flatten(list, sep=' '): Given a list, returns a flat string separated by 'sep' return sep.join(list) + def n_sep(n,
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 06183b984bf5b65d00f3a48fc825019fdc40a524 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:08:20 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:13:28 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=06183b98 scripts/gen_archlist: Rename do_not_want function Give it a better name of split logic down in multiple lines, it is easier to read that a kilometric if line. Logic was inverted to avoid double negation in match_wanted_atoms function. scripts/gen_archlist.py | 24 +++- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index a517ed8..a8b5fcf 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -131,15 +131,21 @@ def get_kws(cpv, arches=ARCHES): ] -def do_not_want(cpv, release=None): - -Check if a package atom is p.masked or has empty keywords, or does not -belong to a release +def can_stabilize_cpv(cpv, release=None): +Whether `cpv` matches stabilization criteria. + +`cpv` must: +* belong to the release +* not be p.masked +* have keywords -if release and not belongs_release(cpv, release) or not \ -portage.portdb.visible([cpv]) or not get_kws(cpv, arches=ALL_ARCHES): -return True -return False +if release and not belongs_release(cpv, release): +return False +if not portage.portdb.visible([cpv]): +return False +if not get_kws(cpv, arches=ALL_ARCHES): +return False +return True def match_wanted_atoms(atom, release=None): @@ -155,7 +161,7 @@ def match_wanted_atoms(atom, release=None): return [ for cpv in reversed(portage.portdb.xmatch('match-all', atom)): -if not do_not_want(cpv, release) +if can_stabilize_cpv(cpv, release) ]
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 628bef00999b4d6250169a5bf9b73dc7bc671015 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:07:39 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:13:27 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=628bef00 scripts/gen_archlist: Fix belongs_release get_ver is undefined, I wonder how this could ever work. scripts/gen_archlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 8ec59c0..a517ed8 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -109,11 +109,11 @@ def make_unstable(kws): def belongs_release(cpv, release): -Check if the given cpv belongs to the given release +Check if `cpv` belongs to the release `release`. # FIXME: This failure function needs better logic if CHECK_DEPS: raise Exception('This function is utterly useless with RECURSIVE mode') -return get_ver(cpv).startswith(release) +return portage.versions.cpv_get_version(cpv).startswith(release) def issystempackage(cpv):
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: e2bca7ae46a92bd68f9335ac8b809364ff7f4814 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 11:26:24 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:13:26 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=e2bca7ae scripts/gen_archlist: Move dev style configuration to argparse This commit actually breaks the script since some functions do not have proper arguments to handle configuration from main entry-point. scripts/gen_archlist.py | 71 ++--- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index e41b20d..1a57fe2 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -23,6 +23,7 @@ from __future__ import division +import argparse import os import sys @@ -50,36 +51,19 @@ EXTREME_DEBUG = False CHECK_DEPS = False APPEND_SLOTS = False # Check for stable keywords +# This is intended to switch between keywordreq (for ~arch) +# and stablereq (for moving from ~arch to arch) STABLE = True +# if not STABLE: +# print 'Currently broken for anything except STABLEREQ' +# print 'Please set STABLE to True' +# sys.exit(1) + ### # Preparation # ### ALL_CPV_KWS = [] -OLD_REL = None -NEW_REL = None - -if __name__ == __main__: -try: -CP_FILE = sys.argv[1] # File which has the cp list -except IndexError: -print Usage: %s file [old_rel] [new_rel] - -Where file is a file with a category/package list - [old_rel] is an optional argument for specifying which release cycle -to use to get the cpv which has the keyword we need -i.e., which cpvs will we get the list of keywords from? - [new_rel] is an optional argument for specifying which release cycle -to use to get the latest cpv on which we want keywords -i.e., which cpvs will go in the list? -WARNING: the logic for old_rel new_rel is very incomplete. See TODO - % sys.argv[0] -sys.exit(0) - -if len(sys.argv) 2: -OLD_REL = sys.argv[2] -if len(sys.argv) 3: -NEW_REL = sys.argv[3] ARCHES = None if STABLE: @@ -87,17 +71,6 @@ if STABLE: else: ARCHES = UNSTABLE_ARCHES -if 'CHECK_DEPS' in os.environ: -CHECK_DEPS = os.environ['CHECK_DEPS'] - -if 'APPEND_SLOTS' in os.environ: -APPEND_SLOTS = os.environ['APPEND_SLOTS'] - -if not STABLE: -print 'Currently broken for anything except STABLEREQ' -print 'Please set STABLE to True' -sys.exit(1) - # Define Functions # @@ -495,7 +468,26 @@ def prettify(cpv_kws): # cpvs that will make it to the final list def main(): Where the magic happens! -for i in open(CP_FILE).readlines(): +parser = argparse.ArgumentParser( +description='Generate a stabilization request for multiple packages' +) +parser.add_argument('-d', '--debug', help='Make output more verbose') +parser.add_argument('--extreme-debug', +help='Make output even more verbose') +parser.add_argument('--check-dependencies', help='') +parser.add_argument('--append-slots', help='Append slots to CPVs output') +parser.add_argument('file', help='File to read CP from') +parser.add_argument('old_version', nargs='?', +help='An optional argument specifying which release' + ' cycle to use to get CPVs which has the' + ' reference keywords for stabilization.') +parser.add_argument('new_version', nargs='?', +help='An optional argument specifying which release' + ' cycle to use to get the latest CPVs that needs' + ' to be stabilized') +args = parser.parse_args() + +for i in open(args.file).readlines(): cp = i[:-1] if cp.startswith('#') or cp.isspace() or not cp: ALL_CPV_KWS.append(cp) @@ -507,13 +499,14 @@ def main(): atoms = [cp] else: # Get all the atoms matching the given cp -cpvs = match_wanted_atoms(cp, release=NEW_REL) +cpvs = match_wanted_atoms(cp, release=args.new_version) for cpv in get_per_slot_cpvs(cpvs): if not cpv: debug('%s: Invalid cpv' % cpv) continue -kws_missing = max_kws(cpv, release=OLD_REL) + +kws_missing = max_kws(cpv, release=args.old_version) if kws_missing == []: # Current cpv has the max keywords = nothing to do nothing_to_be_done(cpv) @@ -524,7 +517,7 @@ def main(): arches = make_unstable(ARCHES) kws_missing = [kw[1:] for kw in get_kws(cpv, arches)] ALL_CPV_KWS += fix_nesting(gen_cpv_kws(cpv, kws_missing, set())) -if
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 1ed9be28e1c70ea89f68d15cf7456ffd7721f352 Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 12:07:21 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:13:27 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=1ed9be28 scripts/gen_archlist: Simplify functions and try to enhance documentation scripts/gen_archlist.py | 46 -- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 1a57fe2..8ec59c0 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -101,14 +101,11 @@ def nothing_to_be_done(atom, type='cpv'): def make_unstable(kws): -Takes a keyword list, and returns a list with them all unstable -nkws = [] -for kw in kws: -if not kw.startswith('~'): -nkws.append('~'+kw) -else: -nkws.append(kw) -return nkws +Transform `kws` into a list of unstable keywords. +return [ +kwd if kw.startswith('~') else '~' + kwd +for kwd in kws +] def belongs_release(cpv, release): @@ -127,14 +124,11 @@ def issystempackage(cpv): def get_kws(cpv, arches=ARCHES): - -Returns an array of KEYWORDS matching 'arches' - -kws = [] -for kw in portage.portdb.aux_get(cpv, ['KEYWORDS'])[0].split(): -if kw in arches: -kws.append(kw) -return kws +Return keywords of `cpv` filtered by `arches`. +return [ +for keyword in portage.portdb.aux_get(cpv, ['KEYWORDS'])[0].split() +if keyword in arches +] def do_not_want(cpv, release=None): @@ -149,20 +143,20 @@ def do_not_want(cpv, release=None): def match_wanted_atoms(atom, release=None): +Return a list of CPV matching `atom`. + +If `release` is provided, CPVs are filtered against it. + +The list is sorted by descending order of version. -Given an atom and a release, return all matching wanted atoms ordered in -descending order of version - -atoms = [] # xmatch is stupid, and ignores ! in an atom... if atom.startswith('!'): return [] -for cpv in portage.portdb.xmatch('match-all', atom): -if do_not_want(cpv, release): -continue -atoms.append(cpv) -atoms.reverse() -return atoms + +return [ +for cpv in reversed(portage.portdb.xmatch('match-all', atom)): +if not do_not_want(cpv, release) +] def get_best_deps(cpv, kws, release=None):
[gentoo-commits] proj/gnome:gen_archlist_cleanup commit in: scripts/
commit: 1bd25971019ba10858560e79e3040b5d4101f61a Author: Gilles Dartiguelongue eva AT gentoo DOT org AuthorDate: Wed Jun 24 11:23:40 2015 + Commit: Gilles Dartiguelongue eva AT gentoo DOT org CommitDate: Wed Jun 24 12:11:21 2015 + URL:https://gitweb.gentoo.org/proj/gnome.git/commit/?id=1bd25971 scripts/gen_archlist: Create a clear main function scripts/gen_archlist.py | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/gen_archlist.py b/scripts/gen_archlist.py index 407ebbd..e41b20d 100755 --- a/scripts/gen_archlist.py +++ b/scripts/gen_archlist.py @@ -493,10 +493,8 @@ def prettify(cpv_kws): # Use the Functions # # # cpvs that will make it to the final list -if __name__ == __main__: -index = 0 -array = [] - +def main(): +Where the magic happens! for i in open(CP_FILE).readlines(): cp = i[:-1] if cp.startswith('#') or cp.isspace() or not cp: @@ -535,3 +533,7 @@ if __name__ == __main__: for i in prettify(ALL_CPV_KWS): print i[0], flatten(i[1]) + + +if __name__ == '__main__': +main()