update scripts
[mono.git] / mcs / tools / corcompare / gen-infos.rb
1 #!/usr/bin/env ruby\r
2 \r
3 require 'ftools'\r
4 \r
5 $gac = 'C:/WINDOWS/assembly/GAC_MSIL'\r
6 $fx =  'C:/WINDOWS/Microsoft.NET/Framework'\r
7 \r
8 $fx1 = File.join $fx, "v1.1.4322"\r
9 $fx2 = File.join $fx, "v2.0.50727"\r
10 $fx3_0 = 'C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.0'\r
11 $fx3_5 = 'C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.5'\r
12 $sl2_0 = 'C:/Program Files/Microsoft Silverlight/2.0.31005.0'\r
13 \r
14 $net_1_1 = [\r
15         "mscorlib",\r
16         "System",\r
17         "System.Data",\r
18         "System.Data.OracleClient",\r
19         "System.DirectoryServices",\r
20         "System.Drawing",\r
21         "System.Runtime.Remoting",\r
22         "System.Runtime.Serialization.Formatters.Soap",\r
23         "System.Security",\r
24         "System.ServiceProcess",\r
25         "System.Web",\r
26         "System.Web.Services",\r
27         "System.Windows.Forms",\r
28         "System.Xml",\r
29         "cscompmgd",\r
30         "Microsoft.VisualBasic",\r
31         "",\r
32         "System.Configuration.Install",\r
33         "System.Design",\r
34         "System.Drawing.Design",\r
35         "System.EnterpriseServices",\r
36         "System.Management",\r
37         "System.Messaging"\r
38 ]\r
39 \r
40 $net_2_0 = [\r
41         "mscorlib",\r
42         "System",\r
43         "System.Configuration",\r
44         "System.Data",\r
45         "System.Data.OracleClient",\r
46         "System.DirectoryServices",\r
47         "System.Drawing",\r
48         "System.Runtime.Remoting",\r
49         "System.Runtime.Serialization.Formatters.Soap",\r
50         "System.Security",\r
51         "System.ServiceProcess",\r
52         "System.Transactions",\r
53         "System.Web",\r
54         "System.Web.Services",\r
55         "System.Windows.Forms",\r
56         "System.Xml",\r
57         "cscompmgd",\r
58         "Microsoft.VisualBasic",\r
59         "",\r
60         "Microsoft.Build.Engine",\r
61         "Microsoft.Build.Framework",\r
62         "Microsoft.Build.Tasks",\r
63         "Microsoft.Build.Utilities",\r
64         "",\r
65         "System.Configuration.Install",\r
66         "System.Design",\r
67         "System.Drawing.Design",\r
68         "System.EnterpriseServices",\r
69         "System.Management",\r
70         "System.Messaging",\r
71 ]\r
72 \r
73 $net_3_0 = [\r
74         "PresentationCore",\r
75 \r
76         "PresentationFramework",\r
77         "System.Speech",\r
78         "WindowsBase",\r
79         "",\r
80         "System.IdentityModel",\r
81         "System.IdentityModel.Selectors",\r
82         "System.IO.Log",\r
83         "System.Runtime.Serialization",\r
84         "System.ServiceModel",\r
85         "",\r
86         "System.Workflow.Activities",\r
87         "System.Workflow.ComponentModel",\r
88         "System.Workflow.Runtime",\r
89         "",\r
90         "PresentationBuildTasks",\r
91         "",\r
92         "PresentationFramework.Aero",\r
93         "PresentationFramework.Classic",\r
94         "PresentationFramework.Luna",\r
95         "PresentationFramework.Royale",\r
96         "ReachFramework",\r
97         "",\r
98         "System.Printing",\r
99 ]\r
100 \r
101 $net_3_5 = [\r
102         "mscorlib",\r
103         "System",\r
104         "System.AddIn",\r
105         "System.AddIn.Contract",\r
106         "System.Configuration",\r
107         "System.Core", \r
108         "System.Configuration.Install",\r
109         "System.Data",\r
110         "System.Data.Linq",\r
111         "System.Data.OracleClient",\r
112         "System.DirectoryServices",\r
113         # "System.DirectoryServices.AccountManagement",\r
114         # "System.DirectoryServices.Protocols",\r
115         "System.Drawing",\r
116         "System.Net",\r
117         "System.Runtime.Remoting",\r
118         "System.Security",\r
119         "System.ServiceProcess",\r
120         "System.Transactions",\r
121         "System.Web",\r
122         "System.Web.Extensions",\r
123         "System.Web.Extensions.Design",\r
124         "System.Web.Mobile",\r
125         "System.Web.RegularExpressions",\r
126         "System.Web.Services",\r
127         "System.Windows.Forms",\r
128         "System.Xml",\r
129         "System.Xml.Linq",\r
130         "",\r
131         "System.Runtime.Serialization.Formatters.Soap",\r
132         "cscompmgd",\r
133         "Microsoft.VisualBasic",\r
134         "",\r
135         "Microsoft.Build.Engine",\r
136         "Microsoft.Build.Framework",\r
137         "Microsoft.Build.Tasks",\r
138         "Microsoft.Build.Utilities",\r
139         "",\r
140         "System.Configuration.Install",\r
141         "System.Design",\r
142         "System.Drawing.Design",\r
143         "System.EnterpriseServices",\r
144         "System.Management",\r
145         "System.Management.Instrumentation",\r
146         "System.Messaging",\r
147 ]\r
148 \r
149 $sl_2_0 = [\r
150         "mscorlib",\r
151         "System.Windows",\r
152         "Microsoft.VisualBasic",\r
153         "System",\r
154         "System.Core",\r
155         "System.Net",\r
156         "System.Runtime.Serialization",\r
157         "System.ServiceModel",\r
158         "System.Windows.Browser",\r
159         "System.Xml",\r
160 ]\r
161 \r
162 def locate(assembly, fxs = nil)\r
163         if fxs\r
164                 fxs.each do |fx|\r
165                         file = File.join fx, assembly + ".dll"\r
166                         return file if File.file?(file)\r
167                 end\r
168         end\r
169 \r
170         gac = File.join $gac, assembly, "**", "*.dll"\r
171         \r
172         glob = Dir.glob gac\r
173 \r
174         return glob.first if glob and glob.length > 0\r
175 end\r
176 \r
177 def delete(glob)\r
178         Dir.glob(glob).each do |file|\r
179                 File.delete file\r
180         end\r
181 end\r
182 \r
183 def clean(pattern, allow_create = false)\r
184         if allow_create and not File.directory? "masterinfos"\r
185                 Dir.mkdir("masterinfos")\r
186                 return\r
187         end\r
188 \r
189         delete(File.join("masterinfos", pattern))\r
190 end\r
191 \r
192 def generate(assembly)\r
193         asm = File.join "masterinfos", assembly + ".dll"\r
194         out = File.join "masterinfos", assembly + ".xml"\r
195         system("./mono-api-info.exe #{asm} > #{out}")\r
196 end\r
197 \r
198 def process(profile, assemblies, fxs = nil)\r
199         clean("*", true)\r
200 \r
201         assemblies.each do |assembly|\r
202                 if assembly != nil and assembly.length > 0\r
203                         #puts assembly \r
204                         location = locate(assembly, fxs)\r
205                         if location\r
206                                 File.copy(location, "masterinfos")\r
207                                 generate(assembly)\r
208                         else\r
209                                 puts "fail to locate " + assembly\r
210                         end\r
211                         #puts "   " + location if location\r
212                 end\r
213         end\r
214 \r
215         clean("*.dll")\r
216 \r
217         file = "masterinfos-#{profile}.tar"\r
218 \r
219         system("tar -cf #{file} masterinfos")\r
220         system("gzip #{file}")\r
221 \r
222         clean("*")\r
223 \r
224         Dir.delete("masterinfos")\r
225 end\r
226 \r
227 delete("*.tar.gz")\r
228 \r
229 process("1.1", $net_1_1, [$fx1])\r
230 process("2.0", $net_2_0, [$fx2])\r
231 process("3.0", $net_3_0, [$fx3_0, $fx2])\r
232 process("3.5", $net_3_5, [$fx3_5, $fx2])\r
233 process("SL2", $sl_2_0, [$sl2_0])\r