c960c130dbe60720e9c12a8e83dfb0a41fb949a1
[mono.git] / mcs / tools / corcompare / gen-infos.rb
1 #!/usr/bin/env ruby
2
3 require 'ftools'
4
5 $gac = 'C:/WINDOWS/assembly/GAC_MSIL'
6 $fx =  'C:/WINDOWS/Microsoft.NET/Framework'
7
8 $fx1_1 = File.join $fx, "v1.1.4322"
9 $fx2_0 = File.join $fx, "v2.0.50727"
10 $fx3_0 = 'C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.0'
11 $fx3_5 = 'C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.5'
12 $fx4_0 = File.join $fx, "v4.0.30319"
13 $fx4_0_wpf = File.join $fx4_0, "WPF"
14 $sl2_0 = 'C:/Program Files/Microsoft Silverlight/2.0.40115.0'
15 $sl2_0sdk = 'C:/Program Files/Microsoft SDKs/Silverlight/v2.0/Libraries/Client/'
16 $sl4 = 'C:/Program Files/Microsoft Silverlight/4.0.51204.0'
17 $sl4_sdk = 'C:/Program Files/Microsoft SDKs/Silverlight/v4.0/Libraries/Client'
18
19 $net_1_1 = [
20         "mscorlib",
21         "System",
22         "System.Data",
23         "System.Data.OracleClient",
24         "System.DirectoryServices",
25         "System.Drawing",
26         "System.Runtime.Remoting",
27         "System.Runtime.Serialization.Formatters.Soap",
28         "System.Security",
29         "System.ServiceProcess",
30         "System.Web",
31         "System.Web.Services",
32         "System.Windows.Forms",
33         "System.Xml",
34         "cscompmgd",
35         "Microsoft.VisualBasic",
36         "",
37         "System.Configuration.Install",
38         "System.Design",
39         "System.Drawing.Design",
40         "System.EnterpriseServices",
41         "System.Management",
42         "System.Messaging"
43 ]
44
45 $net_2_0 = [
46         "mscorlib",
47         "System",
48         "System.Configuration",
49         "System.Data",
50         "System.Data.OracleClient",
51         "System.DirectoryServices",
52         "System.Drawing",
53         "System.Runtime.Remoting",
54         "System.Runtime.Serialization.Formatters.Soap",
55         "System.Security",
56         "System.ServiceProcess",
57         "System.Transactions",
58         "System.Web",
59         "System.Web.Services",
60         "System.Windows.Forms",
61         "System.Xml",
62         "cscompmgd",
63         "Microsoft.VisualBasic",
64         "",
65         "Microsoft.Build.Engine",
66         "Microsoft.Build.Framework",
67         "Microsoft.Build.Tasks",
68         "Microsoft.Build.Utilities",
69         "",
70         "System.Configuration.Install",
71         "System.Design",
72         "System.Drawing.Design",
73         "System.EnterpriseServices",
74         "System.Management",
75         "System.Messaging",
76 ]
77
78 $net_3_0 = [
79         "PresentationCore",
80
81         "PresentationFramework",
82         "System.Speech",
83         "WindowsBase",
84         "",
85         "System.IdentityModel",
86         "System.IdentityModel.Selectors",
87         "System.IO.Log",
88         "System.Runtime.Serialization",
89         "System.ServiceModel",
90         "",
91         "System.Workflow.Activities",
92         "System.Workflow.ComponentModel",
93         "System.Workflow.Runtime",
94         "",
95         "PresentationBuildTasks",
96         "",
97         "PresentationFramework.Aero",
98         "PresentationFramework.Classic",
99         "PresentationFramework.Luna",
100         "PresentationFramework.Royale",
101         "ReachFramework",
102         "",
103         "System.Printing",
104 ]
105
106 $net_3_5 = [
107         "mscorlib",
108         "System",
109         "System.AddIn",
110         "System.AddIn.Contract",
111         "System.Configuration",
112         "System.Core",
113         "System.Configuration.Install",
114         "System.Data",
115         "System.Data.Linq",
116         "System.Data.OracleClient",
117         "System.DirectoryServices",
118         # "System.DirectoryServices.AccountManagement",
119         # "System.DirectoryServices.Protocols",
120         "System.Drawing",
121         "System.Net",
122         "System.Runtime.Remoting",
123         "System.Security",
124         "System.ServiceProcess",
125         "System.Transactions",
126         "System.Web",
127         "System.Web.Extensions",
128         "System.Web.Extensions.Design",
129         "System.Web.Mobile",
130         "System.Web.RegularExpressions",
131         "System.Web.Services",
132         "System.Windows.Forms",
133         "System.Xml",
134         "System.Xml.Linq",
135         "",
136         "System.Runtime.Serialization.Formatters.Soap",
137         "cscompmgd",
138         "Microsoft.VisualBasic",
139         "",
140         "Microsoft.Build.Engine",
141         "Microsoft.Build.Framework",
142         "Microsoft.Build.Tasks",
143         "Microsoft.Build.Utilities",
144         "Microsoft.Build.Conversion.v3.5",
145         "Microsoft.Build.Utilities.v3.5",
146         "",
147         "System.Configuration.Install",
148         "System.Design",
149         "System.Drawing.Design",
150         "System.EnterpriseServices",
151         "System.Management",
152         "System.Management.Instrumentation",
153         "System.Messaging",
154 ]
155
156 $net_4_0 = [
157         "mscorlib",
158
159         "Microsoft.Build.Conversion.v4.0",
160         "Microsoft.Build",
161         "Microsoft.Build.Engine",
162         "Microsoft.Build.Framework",
163         "Microsoft.Build.Tasks.v4.0",
164         "Microsoft.Build.Utilities.v4.0",
165         "Microsoft.CSharp",
166         "Microsoft.Data.Entity.Build.Tasks",
167         "Microsoft.JScript",
168         "Microsoft.VisualBasic.Compatibility.Data",
169         "Microsoft.VisualBasic.Compatibility",
170         "Microsoft.VisualBasic",
171 #       "Microsoft.VisualC.STLCLR",
172
173         "PresentationBuildTasks",
174         "PresentationCore",
175         "PresentationFramework.Aero",
176         "PresentationFramework.Classic",
177         "PresentationFramework",
178         "PresentationFramework.Luna",
179         "PresentationFramework.Royale",
180         "PresentationUI",
181         "ReachFramework",
182
183         "System.Activities",
184         "System.Activities.Core.Presentation",
185         "System.Activities.DurableInstancing",
186         "System.Activities.Presentation",
187         "System.AddIn.Contract",
188         "System.AddIn",
189         "System.ComponentModel.Composition",
190         "System.ComponentModel.DataAnnotations",
191         "System.configuration",
192         "System.Configuration.Install",
193         "System.Core",
194         "System.Data.DataSetExtensions",
195         "System.Data",
196         "System.Data.Entity.Design",
197         "System.Data.Entity",
198         "System.Data.Linq",
199         "System.Data.OracleClient",
200         "System.Data.Services.Client",
201         "System.Data.Services.Design",
202         "System.Data.Services",
203         "System.Data.SqlXml",
204         "System.Deployment",
205         "System.Design",
206         "System.Device",
207         "System.DirectoryServices.AccountManagement",
208         "System.DirectoryServices",
209         "System.DirectoryServices.Protocols",
210         "System",
211         "System.Drawing.Design",
212         "System.Drawing",
213         "System.Dynamic",
214         "System.EnterpriseServices",
215         "System.EnterpriseServices.Thunk",
216         "System.EnterpriseServices.Wrapper",
217         "System.IdentityModel",
218         "System.IdentityModel.Selectors",
219         "System.IO.Log",
220         "System.Management",
221         "System.Management.Instrumentation",
222         "System.Messaging",
223         "System.Net",
224         "System.Numerics",
225         "System.Printing",
226         "System.Runtime.Caching",
227         "System.Runtime.Remoting",
228         "System.Runtime.Serialization",
229         "System.Runtime.Serialization.Formatters.Soap",
230         "System.Security",
231         "System.ServiceModel.Activation",
232         "System.ServiceModel.Activities",
233         "System.ServiceModel.Channels",
234         "System.ServiceModel.Discovery",
235         "System.ServiceModel",
236         "System.ServiceModel.Routing",
237         "System.ServiceModel.Web",
238         "System.ServiceProcess",
239         "System.Speech",
240         "System.Transactions",
241         "System.Web.Abstractions",
242         "System.Web.ApplicationServices",
243         "System.Web.DataVisualization.Design",
244         "System.Web.DataVisualization",
245         "System.Web",
246         "System.Web.DynamicData.Design",
247         "System.Web.DynamicData",
248         "System.Web.Entity.Design",
249         "System.Web.Entity",
250         "System.Web.Extensions.Design",
251         "System.Web.Extensions",
252         "System.Web.Mobile",
253         "System.Web.RegularExpressions",
254         "System.Web.Routing",
255         "System.Web.Services",
256         "System.Windows.Forms.DataVisualization.Design",
257         "System.Windows.Forms.DataVisualization",
258         "System.Windows.Forms",
259         "System.Windows.Presentation",
260         "System.Workflow.Activities",
261         "System.Workflow.ComponentModel",
262         "System.Workflow.Runtime",
263         "System.WorkflowServices",
264         "System.Xaml",
265         "System.Xaml.Hosting",
266         "System.XML",
267         "System.Xml.Linq",
268
269         "WindowsBase",
270         "XamlBuildTask"
271 ]
272
273 $sl_2_0 = [
274         "mscorlib",
275         "System.Windows",
276         "Microsoft.VisualBasic",
277         "System",
278         "System.Core",
279         "System.Net",
280         "System.Runtime.Serialization",
281         "System.ServiceModel",
282         "System.Windows.Browser",
283         "System.Xml",
284         "",
285         "System.Xml.Linq",
286         "System.Windows.Controls",
287         "System.Windows.Controls.Data",
288 ]
289
290 $sl_4 = [
291         "mscorlib",
292         "Microsoft.VisualBasic",
293         "System",
294         "System.Core",
295         "System.Net",
296         "System.Runtime.Serialization",
297         "System.ServiceModel",
298         "System.ServiceModel.Web",
299         "System.Windows",
300         "System.Windows.Browser",
301         "System.Xml",
302         "",
303         "Microsoft.CSharp",
304         "System.ComponentModel.Composition",
305         "System.ComponentModel.Composition.Initialization",
306         "System.ComponentModel.DataAnnotations",
307         "System.Data.Services.Client",
308         "System.Json",
309         "System.Numerics",
310         "System.Runtime.Serialization.Json",
311         "System.ServiceModel.Extensions",
312         "System.ServiceModel.NetTcp",
313         "System.ServiceModel.PollingDuplex",
314         "System.ServiceModel.Syndication",
315         "System.ServiceModel.Web.Extensions",
316         "System.Windows.Controls.Data",
317         "System.Windows.Controls.Data.Input",
318         "System.Windows.Controls",
319         "System.Windows.Controls.Input",
320         "System.Windows.Controls.Navigation",
321         "System.Windows.Data",
322         "System.Xml.Linq",
323         "System.Xml.Serialization",
324         "System.Xml.Utils",
325         "System.Xml.XPath"
326 ]
327
328 def locate(assembly, fxs = nil)
329         if fxs
330                 fxs.each do |fx|
331                         file = File.join fx, assembly + ".dll"
332                         return file if File.file?(file)
333                 end
334         end
335
336         gac = File.join $gac, assembly, "**", "*.dll"
337
338         glob = Dir.glob gac
339
340         return glob.first if glob and glob.length > 0
341 end
342
343 def delete(glob)
344         Dir.glob(glob).each do |file|
345                 File.delete file
346         end
347 end
348
349 def clean(pattern, allow_create = false)
350         if allow_create and not File.directory? "masterinfos"
351                 Dir.mkdir("masterinfos")
352                 return
353         end
354
355         delete(File.join("masterinfos", pattern))
356 end
357
358 def generate(location, assembly)
359         out = File.join "masterinfos", assembly + ".xml"
360         system("./mono-api-info.exe \"#{location}\" > #{out}")
361 end
362
363 def process(profile, assemblies, fxs = nil)
364         clean("*", true)
365
366         assemblies.each do |assembly|
367                 if assembly != nil and assembly.length > 0
368                         puts assembly
369                         location = locate(assembly, fxs)
370                         if location
371                                 generate(location, assembly)
372                         else
373                                 puts "fail to locate " + assembly
374                         end
375                         #puts "   " + location if location
376                 end
377         end
378
379         clean("*.dll")
380
381         file = "masterinfos-#{profile}.tar"
382
383         system("tar -cf #{file} masterinfos")
384         system("gzip #{file}")
385
386         clean("*")
387
388         Dir.delete("masterinfos")
389 end
390
391 delete("*.tar.gz")
392
393 process("1.1", $net_1_1, [$fx1_1])
394 process("2.0", $net_2_0, [$fx2_0])
395 process("3.0", $net_3_0, [$fx3_0, $fx2_0])
396 process("3.5", $net_3_5, [$fx3_5, $fx2_0])
397 process("4.0", $net_4_0, [$fx4_0, $fx4_0_wpf])
398 process("SL4", $sl_4, [$sl4, $sl4_sdk])