Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(373)

Side by Side Diff: tools/create_editor.py

Issue 1138703003: Add an annotated steps for driving our sdk and api archiving. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« tools/bots/dart_sdk.py ('K') | « tools/bots/dart_sdk.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 #
3 # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file.
6 #
7 # A script which will be invoked from gyp to create a build of the editor.
8 #
9 # Usage: ./tools/create_editor.py
10 # [--mode <mode>] [--arch <arch>] [--out <output>] [--build <build>]
11 #
12 # DO NOT CALL THIS SCRIPT DIRECTLY, instead invoke:
13 # ./tools/build.py -mrelease editor
14
15 import glob
16 import optparse
17 import os
18 import shutil
19 import subprocess
20 import sys
21 import utils
22 import zipfile
23
24 from os.path import join
25
26 OUTPUT = None
27 BUILD = None
28
29 OS_CONFIG = {
30 'win32': 'win32, win32',
31 'linux': 'linux, gtk',
32 'macos': 'macosx, cocoa'
33 }
34
35 ARCH_CONFIG = {
36 'ia32': 'x86',
37 'x64': 'x86_64'
38 }
39
40 def AntPath():
41 parent = join('third_party', 'apache_ant', '1.8.4', 'bin')
42 if utils.IsWindows():
43 return join(parent, 'ant.bat')
44 else:
45 return join(parent, 'ant')
46
47
48 def ProcessEditorArchive(arch, archive, outDir):
49 tempDir = join(GetEditorTemp(), 'editor.out')
50 try:
51 os.makedirs(tempDir)
52 except OSError:
53 # Directory already exists.
54 pass
55
56 if utils.IsWindows():
57 f = zipfile.ZipFile(archive)
58 f.extractall(tempDir)
59 f.close()
60 else:
61 subprocess.call(['unzip', '-q', archive, '-d', tempDir])
62
63 if arch == 'x64':
64 if utils.GuessOS() == 'macos':
65 inifile = join(tempDir, 'dart', 'DartEditor.app', 'Contents', 'MacOS',
66 'DartEditor.ini')
67 else:
68 inifile = join(tempDir, 'dart', 'DartEditor.ini')
69 Modify64BitDartEditorIni(inifile)
70
71 for src in glob.glob(join(tempDir, 'dart', '*')):
72 shutil.move(src, outDir)
73
74 shutil.rmtree(tempDir)
75 os.unlink(archive)
76
77
78 def Modify64BitDartEditorIni(iniFilePath):
79 f = open(iniFilePath, 'r')
80 lines = f.readlines()
81 f.close()
82 lines[lines.index('-Xms40m\n')] = '-Xms256m\n'
83 lines[lines.index('-Xmx1024m\n')] = '-Xmx2000m\n'
84 # Add -d64 to give better error messages to user in 64 bit mode.
85 lines[lines.index('-vmargs\n')] = '-vmargs\n-d64\n'
86 f = open(iniFilePath, 'w')
87 f.writelines(lines)
88 f.close()
89
90
91 def GetEditorTemp():
92 return join(BUILD, 'editor.build.temp')
93
94
95 def GetDownloadCache():
96 return GetEclipseBuildRoot()
97
98
99 def GetEclipseBuildRoot():
100 return join(BUILD, 'editor.build.cache')
101
102
103 def GetSdkPath():
104 return join(os.path.dirname(OUTPUT), 'dart-sdk')
105
106
107 def GetOutputParent():
108 return os.path.dirname(os.path.dirname(OUTPUT))
109
110
111 def BuildOptions():
112 options = optparse.OptionParser(usage='usage: %prog [options] <output>')
113 options.add_option("-m", "--mode", metavar='[debug,release]')
114 options.add_option("-a", "--arch", metavar='[ia32,x64]')
115 options.add_option("-o", "--out")
116 options.add_option("-b", "--build")
117 return options
118
119
120 def Main():
121 global OUTPUT
122 global BUILD
123
124 parser = BuildOptions()
125 (options, args) = parser.parse_args()
126
127 if args:
128 parser.print_help()
129 return 1
130
131 osName = utils.GuessOS()
132 mode = 'debug'
133 arch = utils.GuessArchitecture()
134
135 if not options.build:
136 print >> sys.stderr, 'Error: no --build option specified'
137 exit(1)
138 else:
139 BUILD = options.build
140
141 if not options.out:
142 print >> sys.stderr, 'Error: no --out option specified'
143 exit(1)
144 else:
145 # TODO(devoncarew): Currently we scrape the output path to determine the
146 # mode and arch. This is fragile and should moved into one location
147 # (utils.py?) or made more explicit.
148 OUTPUT = options.out
149 mode = ('release', 'debug')['Debug' in OUTPUT]
150 arch = ('ia32', 'x64')['X64' in OUTPUT]
151
152 # Use explicit mode and arch information.
153 if options.mode:
154 mode = options.mode
155 if options.arch:
156 arch = options.arch
157
158 OUTPUT = os.path.abspath(OUTPUT)
159 BUILD = os.path.abspath(BUILD)
160
161 print "\nBuilding the editor"
162 print " config : %s, %s, %s" % (osName, arch, mode)
163 print " output : %s" % OUTPUT
164
165 # Clean the editor output directory.
166 print '\ncleaning %s' % OUTPUT
167 shutil.rmtree(OUTPUT, True)
168
169 # These are the valid eclipse build configurations that we can produce.
170 # We synthesize these up from the OS_CONFIG and ARCH_CONFIG information.
171 # macosx, cocoa, x86 & macosx, cocoa, x86_64
172 # win32, win32, x86 & win32, win32, x86_64
173 # linux, gtk, x86 & linux, gtk, x86_64
174
175 buildConfig = OS_CONFIG[osName] + ', ' + ARCH_CONFIG[arch]
176
177 print "\ninvoking build_rcp.xml with buildConfig = [%s]\n" % buildConfig
178
179 sys.stdout.flush()
180 sys.stderr.flush()
181
182 buildScript = join('editor', 'tools', 'features',
183 'com.google.dart.tools.deploy.feature_releng',
184 'build_rcp.xml')
185 build_cmd = [AntPath(),
186 '-lib',
187 join('third_party', 'bzip2', 'bzip2.jar'),
188 '-Dbuild.out=' + OUTPUT,
189 '-Dbuild.configs=' + buildConfig,
190 '-Dbuild.root=' + GetEclipseBuildRoot(),
191 '-Dbuild.downloads=' + GetDownloadCache(),
192 '-Dbuild.source=' + os.path.abspath('editor'),
193 '-Dbuild.dart.sdk=' + GetSdkPath(),
194 '-Dbuild.no.properties=true',
195 '-Dbuild.channel=' + utils.GetChannel(),
196 '-Dbuild.revision=' + utils.GetSVNRevision(),
197 '-Dbuild.version.qualifier=' + utils.GetEclipseVersionQualifier(),
198 '-Ddart.version.full=' + utils.GetVersion(),
199 '-buildfile',
200 buildScript]
201 print build_cmd
202 buildRcpStatus = subprocess.call(build_cmd, shell=utils.IsWindows())
203
204 if buildRcpStatus != 0:
205 sys.exit(buildRcpStatus)
206
207 # build_rcp.xml will put the built editor archive in the OUTPUT directory
208 # (dart-editor-macosx.cocoa.x86.zip). It contains the editor application in a
209 # dart/ subdirectory. We unzip the contents of the archive into OUTPUT. It
210 # will use the ../dart-sdk directory as its SDK.
211 archives = glob.glob(join(OUTPUT, 'd*.zip'))
212
213 if archives:
214 ProcessEditorArchive(arch, archives[0], OUTPUT)
215
216 if os.path.exists(GetEditorTemp()):
217 shutil.rmtree(GetEditorTemp())
218
219 print('\nEditor build successful')
220
221
222 if __name__ == '__main__':
223 sys.exit(Main())
OLDNEW
« tools/bots/dart_sdk.py ('K') | « tools/bots/dart_sdk.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698