Gentoo Archives: gentoo-commits

From: "Александр Берсенев" <bay@×××××××××.ru>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/autodep:master commit in: /, logger/src/autodep/
Date: Sat, 02 Jul 2011 13:02:08
Message-Id: e9693f76713e6cd44b4215d016a7430acd6137ac.bay@gentoo
1 commit: e9693f76713e6cd44b4215d016a7430acd6137ac
2 Author: Alexander Bersenev <bay <AT> hackerdom <DOT> ru>
3 AuthorDate: Sat Jul 2 19:01:33 2011 +0000
4 Commit: Александр Берсенев <bay <AT> hackerdom <DOT> ru>
5 CommitDate: Sat Jul 2 19:01:33 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/autodep.git;a=commit;h=e9693f76
7
8 changed format of outout
9
10 ---
11 NOTES | 24 ++++++++++-
12 logger/src/autodep/showfsevents.py | 81 ++++++++++++++++++++++++++++++++----
13 2 files changed, 96 insertions(+), 9 deletions(-)
14
15 diff --git a/NOTES b/NOTES
16 index 91c3df3..54b2aee 100644
17 --- a/NOTES
18 +++ b/NOTES
19 @@ -18,4 +18,26 @@ This is few notes mainly for myself.
20 {
21 <stage of building>:{<filename>:[<was not found>,<was blocked>]}
22 }
23 - ]
24 \ No newline at end of file
25 + ]
26 +
27 +4. Format of converted events structure:
28 + {
29 + packagesinfo: {
30 + <package>: {
31 + stage: {
32 + <filename>:
33 + {found:[<was readed>,<was writed>],
34 + notfound:[<was not found>,<was blocked>]}
35 + }
36 + }
37 + }
38 +
39 + otherfilesinfo: {
40 + stage:{
41 + <filename>:
42 + {found:[<was readed>,<was writed>],
43 + notfound:[<was not found>,<was blocked>]}
44 + }
45 + }
46 + }
47 +
48
49 diff --git a/logger/src/autodep/showfsevents.py b/logger/src/autodep/showfsevents.py
50 index aa03d9f..9d252c3 100755
51 --- a/logger/src/autodep/showfsevents.py
52 +++ b/logger/src/autodep/showfsevents.py
53 @@ -1,5 +1,7 @@
54 #!/usr/bin/env python2
55
56 +import optparse
57 +
58 import os
59 import sys
60
61 @@ -8,13 +10,19 @@ import logfs.portage_utils
62
63 #logfs.fstracer.getfsevents("/bin/sh", ["sh" , "-c", "/usr/bin/tac bay_success; /usr/bin/tac bay_god bay_god2"])
64 #events=logfs.fstracer.getfsevents("/bin/cat", ["cat" , "l l l"])
65 -if len(sys.argv)<2:
66 - print "Usage: showfsevents.py <command>"
67 - exit(1)
68 +#if len(sys.argv)<2:
69 +# print "Usage: showfsevents.py <command>"
70 +# exit(1)
71
72 -events=logfs.fstracer.getfsevents(sys.argv[1], sys.argv[1:],approach="fusefs")
73 +args_parser=optparse.OptionParser("%prog [options] <command>")
74 +args_parser.add_option("-v", action="store_true", dest="verbose", default=False, help="show accessed files")
75 +
76 +(options, args) = args_parser.parse_args()
77 +print args
78 +
79 +events=logfs.fstracer.getfsevents(args[0], args,approach="hooklib")
80 print "Program finished, analyzing dependencies"
81 -exit(0);
82 +
83 # get unique filenames
84 filenames={}
85 for stage in events:
86 @@ -27,13 +35,70 @@ for stage in events:
87 filenames=filenames.keys();
88
89 # temporary disabled
90 -#file_to_package=logfs.portage_utils.getpackagesbyfiles(filenames)
91 -file_to_package={}
92 +file_to_package=logfs.portage_utils.getpackagesbyfiles(filenames)
93 +#file_to_package={}
94 #print events
95
96 +# this part is completly unreadable. It converting one complex struct(returned with getfsevents) to
97 +# another which good for user
98 +
99 +events_converted_for_output={}
100 +packagesinfo={}
101 +events_converted_for_output["packagesinfo"]=packagesinfo
102 +otherfilesinfo={}
103 +events_converted_for_output["otherfilesinfo"]=otherfilesinfo
104 +
105 +for stage in sorted(events):
106 + succ_events=events[stage][0]
107 + fail_events=events[stage][1]
108 +
109 + for filename in succ_events:
110 + if filename in file_to_package:
111 + package=file_to_package[filename]
112 + if not package in packagesinfo:
113 + packagesinfo[package]={}
114 + stageinfo=packagesinfo[package]
115 + if not stage in stageinfo:
116 + stageinfo[stage]={}
117 + else:
118 + stageinfo=otherfilesinfo
119 + if not stage in stageinfo:
120 + stageinfo[stage]={}
121 +
122 + filesinfo=stageinfo[stage]
123 + if not filename in filesinfo:
124 + filesinfo[filename]={"found":[],"notfound":[]}
125 + filesinfo[filename]["found"]=succ_events[filename]
126 +
127 + for filename in fail_events:
128 + if filename in file_to_package:
129 + package=file_to_package[filename]
130 + if not package in packagesinfo:
131 + packagesinfo[package]={}
132 + stageinfo=packagesinfo[package]
133 + if not stage in stageinfo:
134 + stageinfo[stage]={}
135 + else:
136 + stageinfo=otherfilesinfo
137 + if not stage in stageinfo:
138 + stageinfo[stage]={}
139 +
140 + filesinfo=stageinfo[stage]
141 + if not filename in filesinfo:
142 + filesinfo[filename]={"found":[],"notfound":[]}
143 + filesinfo[filename]["notfound"]=fail_events[filename]
144 +
145 +#print events_converted_for_output
146 +
147 stagesorder={"clean":1,"setup":2,"unpack":3,"prepare":4,"configure":5,"compile":6,"test":7,
148 "install":8,"preinst":9,"postinst":10,"prerm":11,"postrm":12,"unknown":13}
149
150 +
151 +for package in sorted(packagesinfo):
152 + print "%-40s: %s"%(package,packagesinfo[package].keys())
153 +
154 +
155 +"""
156 for stage in sorted(events, key=stagesorder.get):
157 succ_events=events[stage][0]
158 fail_events=events[stage][1]
159 @@ -70,5 +135,5 @@ for stage in sorted(events, key=stagesorder.get):
160 if filename in file_to_package:
161 print file_to_package[filename],
162 print
163 -
164 + """
165 ##logfs.fstracer.getfsevents("emerge", ["emerge","--info"])
166 \ No newline at end of file