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