diff options
author | Alexander Bersenev <bay@hackerdom.ru> | 2011-08-16 12:29:44 +0000 |
---|---|---|
committer | Alexander Bersenev <bay@hackerdom.ru> | 2011-08-16 12:29:44 +0000 |
commit | 35e1dc34db0539d6a6478209bdc8caf00d82bb7a (patch) | |
tree | 0151e11221be67f9bf381c8d62cfd409f9511725 /src/autodep/autodep | |
parent | allowing all dependencies of portage package (diff) | |
download | autodep-35e1dc34db0539d6a6478209bdc8caf00d82bb7a.tar.gz autodep-35e1dc34db0539d6a6478209bdc8caf00d82bb7a.tar.bz2 autodep-35e1dc34db0539d6a6478209bdc8caf00d82bb7a.zip |
changes in output
Diffstat (limited to 'src/autodep/autodep')
-rwxr-xr-x | src/autodep/autodep | 123 |
1 files changed, 81 insertions, 42 deletions
diff --git a/src/autodep/autodep b/src/autodep/autodep index 751dca7..1152180 100755 --- a/src/autodep/autodep +++ b/src/autodep/autodep @@ -41,7 +41,8 @@ def parse_args(): const="fusefs", help="use fuse logging approach(slow, but reliable)") args_parser.set_defaults(approach="hooklib") - args_parser.epilog="Example: %s -b lsof,cowsay emerge bash" % (os.path.basename(sys.argv[0])) + args_parser.epilog="Example: %s -blockpkgs lsof,cowsay emerge bash" % ( + os.path.basename(sys.argv[0])) args_parser.disable_interspersed_args() (options, args) = args_parser.parse_args() if len(args)==0: @@ -56,20 +57,27 @@ def init_environment(): return portage_api, system_packages -def init_runtime_vars(options,args): +def init_runtime_vars(portage_api, options,args): runtime_vars={} # This is here mainly for grouping. We are trying to # get as much data about an environment as possible runtime_vars["starttime"]=int(time.time()) # trivial check for emerge proccess - if args[0]=="emerge": + if os.path.basename(args[0])=="emerge": runtime_vars["is_emerge"]=True emergeaction ,emergeopts, emergefiles=portage_api.parse_emerge_args(args[1:]) runtime_vars["raw_emerge_parameters"]=args[1:] runtime_vars["emerge_parameters"]=(emergeaction ,emergeopts, emergefiles) + runtime_vars["mergelist"]=portage_api.get_merge_list( + runtime_vars["raw_emerge_parameters"]) + if len(emergefiles)>1: print "Please, install packages one by one to get more accurate reports" + + if len(runtime_vars["mergelist"])==0: + print "No packages will be installed or there is an error with counting" + else: runtime_vars["is_emerge"]=False @@ -94,9 +102,9 @@ def get_filter_function(options,system_packages,portage_api): def filter(eventname,filename,stage): return not filename in files_to_block return filter - elif options.strict_block and options.packages: - print "You can't use --block and --blockpkgs options togeter\n" - exit(1) + #elif options.strict_block and options.packages: + #print "You can't use --block and --blockpkgs options togeter\n" + #exit(1) elif options.strict_block: # this option is very strict # because blocking logic is complex print "Building a list of files to block. This may take some time" @@ -111,16 +119,15 @@ def get_filter_function(options,system_packages,portage_api): if len(emergefiles)>1: print "You can't install several packages with option -b" exit(1) - mergelist=portage_api.get_merge_list(runtime_vars["raw_emerge_parameters"]) - if len(mergelist)!=1: - print "You can't install several packages with option -b" - print "Emerge tried to install several packages: %s" % mergelist - print "You can force emerge to merge a package without any other " \ - "packages with emerge --nodeps option or you can install these " \ + if len(runtime_vars["mergelist"])!=1: + print "You can't install several packages with option -b." + print "Emerge tried to install several packages: %s. " % runtime_vars["mergelist"] + print "You can force emerge to merge a package wit hout any other "\ + "packages with emerge --nodeps option or you can install these "\ "packages first" exit(1) - pkg=mergelist[0] + pkg=runtime_vars["mergelist"][0] depslist=list(portage_api.get_deps(pkg)) allowedpkgs+=depslist else: @@ -155,7 +162,7 @@ def get_filter_function(options,system_packages,portage_api): portage_api, system_packages=init_environment() options,args=parse_args() -runtime_vars=init_runtime_vars(options,args) +runtime_vars=init_runtime_vars(portage_api,options,args) color_printer=colorize_output.color_printer(not options.nocolor) @@ -168,24 +175,35 @@ print "Program finished, analyzing dependencies" if runtime_vars["is_emerge"]: # try to get information about packages merged sucessfully - try: - pkgs=portage_log_parser.get_list_of_merged_packages( - runtime_vars["starttime"],runtime_vars["endtime"] - ) - if len(pkgs) > 1: - print "Several packages were installed. The report will be inaccurate" - elif len(pkgs)==0: - print "None packages have been installed sucessfully. The report will be inaccurate" - runtime_vars["pkgs_installed"]=pkgs - runtime_vars["deps_buildtime"]=[] - runtime_vars["deps_all"]=[] - for pkg in pkgs: - runtime_vars["deps_buildtime"]+=portage_api.get_deps(pkg,["DEPEND"]) - runtime_vars["deps_all"]+=portage_api.get_deps(pkg,["DEPEND","RDEPEND"]) - except: - print "Non-critical error while parsing logfile of emerge" - runtime_vars["is_emerge"]=False # shutting down all emerge handling logic - pass + #try: + runtime_vars["deps_all"]=set([]) + runtime_vars["deps_buildtime"]=set([]) + for pkg in runtime_vars["mergelist"]: + runtime_vars["deps_all"]=runtime_vars["deps_all"].union( + portage_api.get_deps(pkg,["DEPEND", "RDEPEND"])) + runtime_vars["deps_buildtime"]=runtime_vars["deps_buildtime"].union( + portage_api.get_dep(pkg,["DEPEND"])) + + runtime_vars["deps_portage"]=portage_api.get_deps('portage',["DEPEND", "RDEPEND"]) + + + #pkgs=portage_log_parser.get_list_of_merged_packages( + # runtime_vars["starttime"],runtime_vars["endtime"] + # ) + #if len(pkgs) > 1: + # print "Several packages were installed. The report will be inaccurate" + #elif len(pkgs)==0: + # print "None packages have been installed sucessfully. The report will be inaccurate" + #runtime_vars["pkgs_installed"]=pkgs + #runtime_vars["deps_buildtime"]=[] + #runtime_vars["deps_all"]=[] + #for pkg in pkgs: + # runtime_vars["deps_buildtime"]+=portage_api.get_deps(pkg,["DEPEND"]) + # runtime_vars["deps_all"]+=portage_api.get_deps(pkg,["DEPEND","RDEPEND"]) + #except: + #print "Non-critical error while parsing logfile of emerge" + #runtime_vars["is_emerge"]=False # shutting down all emerge handling logic + #pass # get unique filenames filenames=set() @@ -259,8 +277,9 @@ for package in sorted(packagesinfo): if package in system_packages and not options.verbose: continue - is_attention_pkg=runtime_vars["is_emerge"] and package not in runtime_vars["deps_all"] - + is_pkg_in_dep=runtime_vars["is_emerge"] and package in runtime_vars["deps_all"] + is_pkg_in_portage_dep=runtime_vars["is_emerge"] and package in runtime_vars["deps_portage"] + is_pkg_python="dev-lang/python" in package stages=[] for stage in sorted(packagesinfo[package].keys(), key=stagesorder.get): @@ -274,13 +293,29 @@ for package in sorted(packagesinfo): if len(packagesinfo[package][stage][filename]["found"])!=0: was_readed,was_writed=packagesinfo[package][stage][filename]["found"] if not filename in filenames: - filenames[filename]=[was_readed,was_writed] + filenames[filename]=['ok',was_readed,was_writed] + else: + status, old_was_readed, old_was_writed=filenames[filename] + filenames[filename]=[ + 'ok',old_was_readed | was_readed, old_was_writed | was_writed + ] + if len(packagesinfo[package][stage][filename]["notfound"])!=0: + was_notfound,was_blocked=packagesinfo[package][stage][filename]["notfound"] + if not filename in filenames: + filenames[filename]=['err',was_notfound,was_blocked] else: - old_was_readed, old_was_writed=filenames[filename] - filenames[filename]=[old_was_readed | was_readed, old_was_writed | was_writed ] + status, old_was_notfound, old_was_blocked=filenames[filename] + filenames[filename]=[ + 'err',old_was_notfound | was_notfound, old_was_blocked | was_blocked + ] + - if not is_attention_pkg: + if not runtime_vars["is_emerge"] or is_pkg_in_dep: color_printer.printmsg("text","[OK]") + elif is_pkg_in_portage_dep: + color_printer.printmsg("text","[PORTAGE DEP]") + elif is_pkg_python: + color_printer.printmsg("text","[INTERPRETER]") elif not events_analysis.is_package_useful(package,stages,filenames.keys()): color_printer.printmsg("text","[LIKELY OK]") else: @@ -292,10 +327,14 @@ for package in sorted(packagesinfo): # this is here for readability action={ - (False,False):"accessed", - (True,False):"readed", - (False,True):"writed", - (True,True):"readed and writed" + ('ok',False,False):"accessed", + ('ok',True,False):"readed", + ('ok',False,True):"writed", + ('ok',True,True):"readed and writed", + ('err',False,False):"other error", + ('err',True,False):"not found", + ('err',False,True):"blocked", + ('err',True,True):"not found and blocked" } filescounter=0 |