diff options
author | Alexander Bersenev <bay@hackerdom.ru> | 2011-07-02 19:01:33 +0000 |
---|---|---|
committer | Alexander Bersenev <bay@hackerdom.ru> | 2011-07-02 19:01:33 +0000 |
commit | e9693f76713e6cd44b4215d016a7430acd6137ac (patch) | |
tree | 5465671281514e7671550b598f31c574fd746333 | |
parent | ctrl-c handling (diff) | |
download | autodep-e9693f76713e6cd44b4215d016a7430acd6137ac.tar.gz autodep-e9693f76713e6cd44b4215d016a7430acd6137ac.tar.bz2 autodep-e9693f76713e6cd44b4215d016a7430acd6137ac.zip |
changed format of outout
-rw-r--r-- | NOTES | 24 | ||||
-rwxr-xr-x | logger/src/autodep/showfsevents.py | 81 |
2 files changed, 96 insertions, 9 deletions
@@ -18,4 +18,26 @@ This is few notes mainly for myself. { <stage of building>:{<filename>:[<was not found>,<was blocked>]} } - ]
\ No newline at end of file + ] + +4. Format of converted events structure: + { + packagesinfo: { + <package>: { + stage: { + <filename>: + {found:[<was readed>,<was writed>], + notfound:[<was not found>,<was blocked>]} + } + } + } + + otherfilesinfo: { + stage:{ + <filename>: + {found:[<was readed>,<was writed>], + notfound:[<was not found>,<was blocked>]} + } + } + } + diff --git a/logger/src/autodep/showfsevents.py b/logger/src/autodep/showfsevents.py index aa03d9f..9d252c3 100755 --- a/logger/src/autodep/showfsevents.py +++ b/logger/src/autodep/showfsevents.py @@ -1,5 +1,7 @@ #!/usr/bin/env python2 +import optparse + import os import sys @@ -8,13 +10,19 @@ import logfs.portage_utils #logfs.fstracer.getfsevents("/bin/sh", ["sh" , "-c", "/usr/bin/tac bay_success; /usr/bin/tac bay_god bay_god2"]) #events=logfs.fstracer.getfsevents("/bin/cat", ["cat" , "l l l"]) -if len(sys.argv)<2: - print "Usage: showfsevents.py <command>" - exit(1) +#if len(sys.argv)<2: +# print "Usage: showfsevents.py <command>" +# exit(1) -events=logfs.fstracer.getfsevents(sys.argv[1], sys.argv[1:],approach="fusefs") +args_parser=optparse.OptionParser("%prog [options] <command>") +args_parser.add_option("-v", action="store_true", dest="verbose", default=False, help="show accessed files") + +(options, args) = args_parser.parse_args() +print args + +events=logfs.fstracer.getfsevents(args[0], args,approach="hooklib") print "Program finished, analyzing dependencies" -exit(0); + # get unique filenames filenames={} for stage in events: @@ -27,13 +35,70 @@ for stage in events: filenames=filenames.keys(); # temporary disabled -#file_to_package=logfs.portage_utils.getpackagesbyfiles(filenames) -file_to_package={} +file_to_package=logfs.portage_utils.getpackagesbyfiles(filenames) +#file_to_package={} #print events +# this part is completly unreadable. It converting one complex struct(returned with getfsevents) to +# another which good for user + +events_converted_for_output={} +packagesinfo={} +events_converted_for_output["packagesinfo"]=packagesinfo +otherfilesinfo={} +events_converted_for_output["otherfilesinfo"]=otherfilesinfo + +for stage in sorted(events): + succ_events=events[stage][0] + fail_events=events[stage][1] + + for filename in succ_events: + if filename in file_to_package: + package=file_to_package[filename] + if not package in packagesinfo: + packagesinfo[package]={} + stageinfo=packagesinfo[package] + if not stage in stageinfo: + stageinfo[stage]={} + else: + stageinfo=otherfilesinfo + if not stage in stageinfo: + stageinfo[stage]={} + + filesinfo=stageinfo[stage] + if not filename in filesinfo: + filesinfo[filename]={"found":[],"notfound":[]} + filesinfo[filename]["found"]=succ_events[filename] + + for filename in fail_events: + if filename in file_to_package: + package=file_to_package[filename] + if not package in packagesinfo: + packagesinfo[package]={} + stageinfo=packagesinfo[package] + if not stage in stageinfo: + stageinfo[stage]={} + else: + stageinfo=otherfilesinfo + if not stage in stageinfo: + stageinfo[stage]={} + + filesinfo=stageinfo[stage] + if not filename in filesinfo: + filesinfo[filename]={"found":[],"notfound":[]} + filesinfo[filename]["notfound"]=fail_events[filename] + +#print events_converted_for_output + stagesorder={"clean":1,"setup":2,"unpack":3,"prepare":4,"configure":5,"compile":6,"test":7, "install":8,"preinst":9,"postinst":10,"prerm":11,"postrm":12,"unknown":13} + +for package in sorted(packagesinfo): + print "%-40s: %s"%(package,packagesinfo[package].keys()) + + +""" for stage in sorted(events, key=stagesorder.get): succ_events=events[stage][0] fail_events=events[stage][1] @@ -70,5 +135,5 @@ for stage in sorted(events, key=stagesorder.get): if filename in file_to_package: print file_to_package[filename], print - + """ ##logfs.fstracer.getfsevents("emerge", ["emerge","--info"])
\ No newline at end of file |