From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QENUN-0006Co-1V for garchives@archives.gentoo.org; Mon, 25 Apr 2011 15:14:15 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1C8D41C111; Mon, 25 Apr 2011 15:13:33 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id AA4601C019 for ; Mon, 25 Apr 2011 15:13:32 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id F14171B407B for ; Mon, 25 Apr 2011 15:13:31 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id EB344804A2 for ; Mon, 25 Apr 2011 15:13:30 +0000 (UTC) From: "Brian Dolbec" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Brian Dolbec" Message-ID: <8a83c1932eef3a025700f7d230a37b4fe0883794.dol-sen@gentoo> Subject: [gentoo-commits] proj/gentoolkit:revdep-rebuild commit in: pym/gentoolkit/revdep_rebuild/ X-VCS-Repository: proj/gentoolkit X-VCS-Files: pym/gentoolkit/revdep_rebuild/analyse.py pym/gentoolkit/revdep_rebuild/assign.py pym/gentoolkit/revdep_rebuild/cache.py pym/gentoolkit/revdep_rebuild/collect.py pym/gentoolkit/revdep_rebuild/settings.py X-VCS-Directories: pym/gentoolkit/revdep_rebuild/ X-VCS-Committer: dol-sen X-VCS-Committer-Name: Brian Dolbec X-VCS-Revision: 8a83c1932eef3a025700f7d230a37b4fe0883794 Date: Mon, 25 Apr 2011 15:13:30 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 6f10a293790738684a7bce6d4ea69e7d commit: 8a83c1932eef3a025700f7d230a37b4fe0883794 Author: dol-sen gmail com> AuthorDate: Mon Apr 25 06:18:44 2011 +0000 Commit: Brian Dolbec gmail com> CommitDate: Mon Apr 25 06:18:44 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoolkit.gi= t;a=3Dcommit;h=3D8a83c193 migrate away from a global SETTINGS usage. Better for tests and api usability. --- pym/gentoolkit/revdep_rebuild/analyse.py | 21 ++++++++++----------- pym/gentoolkit/revdep_rebuild/assign.py | 10 ++++------ pym/gentoolkit/revdep_rebuild/cache.py | 8 ++++---- pym/gentoolkit/revdep_rebuild/collect.py | 15 +++++++-------- pym/gentoolkit/revdep_rebuild/settings.py | 17 +++++++++++++++-- 5 files changed, 40 insertions(+), 31 deletions(-) diff --git a/pym/gentoolkit/revdep_rebuild/analyse.py b/pym/gentoolkit/re= vdep_rebuild/analyse.py index a9ac753..5ee0c7b 100644 --- a/pym/gentoolkit/revdep_rebuild/analyse.py +++ b/pym/gentoolkit/revdep_rebuild/analyse.py @@ -11,11 +11,9 @@ from stuff import scan from collect import prepare_search_dirs, parse_revdep_config, collect_li= braries_from_dir, collect_binaries_from_dir from assign import assign_packages from cache import save_cache -from settings import SETTINGS =20 =20 - -def prepare_checks(files_to_check, libraries, bits): +def prepare_checks(files_to_check, libraries, bits, cmd_max_args): ''' Calls scanelf for all files_to_check, then returns found libraries = and dependencies ''' =20 @@ -23,7 +21,7 @@ def prepare_checks(files_to_check, libraries, bits): dependencies =3D [] # list of lists of files (from file_to_check) that = uses # library (for dependencies[id] and libs[id] =3D> id=3D=3Did) =20 - for line in scan(['-M', str(bits), '-nBF', '%F %n'], files_to_check, SE= TTINGS['CMD_MAX_ARGS']): + for line in scan(['-M', str(bits), '-nBF', '%F %n'], files_to_check, cm= d_max_args): #call_program(['scanelf', '-M', str(bits), '-nBF', '%F %n',]+files_to_c= heck).strip().split('\n'): r =3D line.strip().split(' ') if len(r) < 2: # no dependencies? @@ -116,7 +114,8 @@ def main_checks(found_libs, broken, dependencies, log= ger): return broken_pathes =20 =20 -def analyse(logger=3Dlogging, libraries=3DNone, la_libraries=3DNone, lib= raries_links=3DNone, binaries=3DNone, _libs_to_check=3Dset()): +def analyse(settings=3DNone, logger=3DNone, libraries=3DNone, la_librari= es=3DNone, + libraries_links=3DNone, binaries=3DNone, _libs_to_check=3Dset()): """Main program body. It will collect all info and determine the pkgs needing rebuilding. =20 @@ -132,9 +131,9 @@ def analyse(logger=3Dlogging, libraries=3DNone, la_li= braries=3DNone, libraries_links=3DN #TODO: add partial cache (for ex. only libraries) when found for some = reason =20 logger.warn(green(' * ') + bold('Collecting system binaries and librar= ies')) - bin_dirs, lib_dirs =3D prepare_search_dirs(logger) + bin_dirs, lib_dirs =3D prepare_search_dirs(logger, settings) =20 - masked_dirs, masked_files, ld =3D parse_revdep_config() + masked_dirs, masked_files, ld =3D parse_revdep_config(settings['REVDEP= _CONFDIR']) lib_dirs =3D lib_dirs.union(ld) bin_dirs =3D bin_dirs.union(ld) masked_dirs =3D masked_dirs.union(set(['/lib/modules', '/lib32/modules= ', '/lib64/modules',])) @@ -143,7 +142,7 @@ def analyse(logger=3Dlogging, libraries=3DNone, la_li= braries=3DNone, libraries_links=3DN libraries, la_libraries, libraries_links, symlink_pairs =3D collect_li= braries_from_dir(lib_dirs, masked_dirs, logger) binaries =3D collect_binaries_from_dir(bin_dirs, masked_dirs, logger) =20 - if SETTINGS['USE_TMP_FILES']: + if settings['USE_TMP_FILES']: save_cache(to_save=3D{'libraries':libraries, 'la_libraries':la_librar= ies, 'libraries_links':libraries_links, 'binaries':binaries}) =20 =20 @@ -170,10 +169,10 @@ def analyse(logger=3Dlogging, libraries=3DNone, la_= libraries=3DNone, libraries_links=3DN =20 for av_bits in glob.glob('/lib[0-9]*') or ('/lib32',): bits =3D int(av_bits[4:]) - _libraries =3D scan(['-M', str(bits), '-BF', '%F'], libraries+librarie= s_links, SETTINGS['CMD_MAX_ARGS']) + _libraries =3D scan(['-M', str(bits), '-BF', '%F'], libraries+librarie= s_links, settings['CMD_MAX_ARGS']) #call_program(['scanelf', '-M', str(bits), '-BF', '%F',] + libraries+l= ibraries_links).strip().split('\n') =20 - found_libs, dependencies =3D prepare_checks(libs_and_bins, _libraries,= bits) + found_libs, dependencies =3D prepare_checks(libs_and_bins, _libraries,= bits, settings['CMD_MAX_ARGS']) =20 broken =3D find_broken(found_libs, _libraries, _libs_to_check) broken_la =3D extract_dependencies_from_la(la_libraries, _libraries, _= libs_to_check, logger) @@ -186,7 +185,7 @@ def analyse(logger=3Dlogging, libraries=3DNone, la_li= braries=3DNone, libraries_links=3DN =20 logger.warn(green(' * ') + bold('Assign files to packages')) =20 - return assign_packages(broken_pathes, logger) + return assign_packages(broken_pathes, logger, settings) =20 =20 =20 diff --git a/pym/gentoolkit/revdep_rebuild/assign.py b/pym/gentoolkit/rev= dep_rebuild/assign.py index c4ae750..9eb177d 100644 --- a/pym/gentoolkit/revdep_rebuild/assign.py +++ b/pym/gentoolkit/revdep_rebuild/assign.py @@ -2,21 +2,19 @@ =20 import os import re -import logging import portage from portage import portdb from portage.output import bold, red, blue, yellow, green, nocolor -from settings import SETTINGS =20 =20 -def assign_packages(broken, logger=3Dlogging): +def assign_packages(broken, logger, settings): ''' Finds and returns packages that owns files placed in broken. Broken is list of files ''' assigned =3D set() - for group in os.listdir(SETTINGS['PKG_DIR']): - for pkg in os.listdir(SETTINGS['PKG_DIR'] + group): - f =3D SETTINGS['PKG_DIR'] + group + '/' + pkg + '/CONTENTS' + for group in os.listdir(settings['PKG_DIR']): + for pkg in os.listdir(settings['PKG_DIR'] + group): + f =3D settings['PKG_DIR'] + group + '/' + pkg + '/CONTENTS' if os.path.exists(f): try: with open(f, 'r') as cnt: diff --git a/pym/gentoolkit/revdep_rebuild/cache.py b/pym/gentoolkit/revd= ep_rebuild/cache.py index 616ef79..e1a8e11 100644 --- a/pym/gentoolkit/revdep_rebuild/cache.py +++ b/pym/gentoolkit/revdep_rebuild/cache.py @@ -4,10 +4,10 @@ import os import time import logging from portage.output import red -from settings import SETTINGS +from settings import DEFAULTS =20 =20 -def read_cache(temp_path=3DSETTINGS['DEFAULT_TMP_DIR']): +def read_cache(temp_path=3DDEFAULTS['DEFAULT_TMP_DIR']): ''' Reads cache information needed by analyse function. This function does not checks if files exists nor timestamps, check_temp_files should be called first @@ -29,7 +29,7 @@ def read_cache(temp_path=3DSETTINGS['DEFAULT_TMP_DIR'])= : return (ret['libraries'], ret['la_libraries'], ret['libraries_links'], = ret['binaries']) =20 =20 -def save_cache(logger=3Dlogging, to_save=3D{}, temp_path=3DSETTINGS['DEF= AULT_TMP_DIR']): +def save_cache(logger=3Dlogging, to_save=3D{}, temp_path=3DDEFAULTS['DEF= AULT_TMP_DIR']): ''' Tries to store caching information. @param logger @param to_save have to be dict with keys: libraries, la_libraries, lib= raries_links and binaries @@ -53,7 +53,7 @@ def save_cache(logger=3Dlogging, to_save=3D{}, temp_pat= h=3DSETTINGS['DEFAULT_TMP_DIR'] =20 =20 =20 -def check_temp_files(temp_path=3DSETTINGS['DEFAULT_TMP_DIR'], max_delay=3D= 3600): +def check_temp_files(temp_path=3DDEFAULTS['DEFAULT_TMP_DIR'], max_delay=3D= 3600): ''' Checks if temporary files from previous run are still available and if they aren't too old @param temp_path is directory, where temporary files should be found diff --git a/pym/gentoolkit/revdep_rebuild/collect.py b/pym/gentoolkit/re= vdep_rebuild/collect.py index 613749a..735857b 100644 --- a/pym/gentoolkit/revdep_rebuild/collect.py +++ b/pym/gentoolkit/revdep_rebuild/collect.py @@ -7,10 +7,9 @@ import stat import logging import portage from portage.output import bold, red, blue, yellow, green, nocolor -from settings import SETTINGS =20 =20 -def parse_conf(conf_file=3DSETTINGS['DEFAULT_LD_FILE'], visited=3DNone, = logger=3Dlogging): +def parse_conf(conf_file, visited=3DNone, logger=3DNone): ''' Parses supplied conf_file for libraries pathes. conf_file is file or files to parse visited is set of files already parsed @@ -54,7 +53,7 @@ def parse_conf(conf_file=3DSETTINGS['DEFAULT_LD_FILE'],= visited=3DNone, logger=3Dloggi return lib_dirs =20 =20 -def prepare_search_dirs(logger=3Dlogging): +def prepare_search_dirs(logger, settings): ''' Lookup for search dirs. Returns tuple with two lists, (list_of_bin_dirs, list_of_lib_dirs) ''' @@ -63,7 +62,7 @@ def prepare_search_dirs(logger=3Dlogging): lib_dirs =3D set(['/lib', '/usr/lib', ]) =20 #try: - with open(os.path.join(portage.root, SETTINGS['DEFAULT_ENV_FILE']), 'r'= ) as f: + with open(os.path.join(portage.root, settings['DEFAULT_ENV_FILE']), 'r'= ) as f: for line in f.readlines(): line =3D line.strip() m =3D re.match("^export (ROOT)?PATH=3D'([^']+)'", line) @@ -72,11 +71,11 @@ def prepare_search_dirs(logger=3Dlogging): #except EnvironmentError: #logger.debug(yellow('Could not open file %s' % f)) =20 - lib_dirs =3D parse_conf(logger=3Dlogger) + lib_dirs =3D parse_conf(settings['DEFAULT_LD_FILE'], logger=3Dlogger) return (bin_dirs, lib_dirs) =20 =20 -def parse_revdep_config(): +def parse_revdep_config(revdep_confdir): ''' Parses all files under /etc/revdep-rebuild/ and returns tuple of: (masked_dirs, masked_files, search_dirs)''' =20 @@ -85,7 +84,7 @@ def parse_revdep_config(): masked_files =3D set() =20 #TODO: remove hard-coded path - for f in os.listdir(SETTINGS['REVDEP_CONFDIR']): + for f in os.listdir(revdep_confdir): for line in open(os.path.join('/etc/revdep-rebuild', f)): line =3D line.strip() if not line.startswith('#'): #first check for comment, we do not want= to regex all lines @@ -110,7 +109,7 @@ def parse_revdep_config(): return (masked_dirs, masked_files, search_dirs) =20 =20 -def collect_libraries_from_dir(dirs, mask, logger=3Dlogging): +def collect_libraries_from_dir(dirs, mask, logger): ''' Collects all libraries from specified list of directories. mask is list of pathes, that are ommited in scanning, can be eighter s= ingle file or entire directory Returns tuple composed of: list of libraries, list of symlinks, and to= upe with pair diff --git a/pym/gentoolkit/revdep_rebuild/settings.py b/pym/gentoolkit/r= evdep_rebuild/settings.py index b47cb3e..7747ac2 100644 --- a/pym/gentoolkit/revdep_rebuild/settings.py +++ b/pym/gentoolkit/revdep_rebuild/settings.py @@ -1,9 +1,10 @@ #!/usr/bin/python =20 import os +import sys import portage =20 -SETTINGS =3D { +DEFAULTS =3D { 'DEFAULT_LD_FILE': os.path.join(portage.root, 'etc/ld.so.conf'), 'DEFAULT_ENV_FILE': os.path.join(portage.root, 'etc/profile.env'), 'REVDEP_CONFDIR': os.path.join(portage.root, 'etc/revdep-rebuild/'), @@ -23,4 +24,16 @@ SETTINGS =3D { # can be set True from the cli with the --no-pretend option 'NO_PRETEND': False, 'VERBOSITY': 1, - } + =09 + 'quiet': False, + 'nocolor': False, + 'library': set(), + 'no-progress': False, + 'debug': False, + 'no-ld-path': False, + 'no-order': False, + 'pass_through_options': '', + 'stdout': sys.stdout, + 'stdin': sys.stdin, + 'stderr': sys.stderr + }