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

Side by Side Diff: dart/tools/create_editor.py

Issue 12090092: Build the Editor from GYP/build.py. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed review comments Created 7 years, 10 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
« no previous file with comments | « dart/editor/build/truncate_files.py ('k') | deps/all.deps/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 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 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. 5 # BSD-style license that can be found in the LICENSE file.
6 # 6 #
7 # A script which will be invoked from gyp to create a build of the editor. 7 # A script which will be invoked from gyp to create a build of the editor.
8 # 8 #
9 # TODO(devoncarew): currently this script is not callable from tools/build.py 9 # Usage: ./tools/create_editor.py
10 # Usage: ./tools/build.py editor 10 # [--mode <mode>] [--arch <arch>] [--out <output>] [--build <build>]
11 # -or- 11 #
12 # Usage: ./tools/build_editor.py [--mode <mode>] [--arch <arch>] output 12 # DO NOT CALL THIS SCRIPT DIRECTLY, instead invoke:
13 # ./tools/build.py -mrelease editor
13 14
14 import glob 15 import glob
15 import optparse 16 import optparse
16 import os 17 import os
17 import shutil 18 import shutil
18 import subprocess 19 import subprocess
19 import sys 20 import sys
20 import utils 21 import utils
21 import zipfile 22 import zipfile
22 23
23 from os.path import join 24 from os.path import join
24 25
25 OUTPUT = None 26 OUTPUT = None
27 BUILD = None
26 28
27 OS_CONFIG = { 29 OS_CONFIG = {
28 'win32': 'win32, win32', 30 'win32': 'win32, win32',
29 'linux': 'linux, gtk', 31 'linux': 'linux, gtk',
30 'macos': 'macosx, cocoa' 32 'macos': 'macosx, cocoa'
31 } 33 }
32 34
33 ARCH_CONFIG = { 35 ARCH_CONFIG = {
34 'ia32': 'x86', 36 'ia32': 'x86',
35 'x64': 'x86_64' 37 'x64': 'x86_64'
(...skipping 18 matching lines...) Expand all
54 subprocess.call(['unzip', '-q', archive, '-d', tempDir]) 56 subprocess.call(['unzip', '-q', archive, '-d', tempDir])
55 57
56 for src in glob.glob(join(tempDir, 'dart', '*')): 58 for src in glob.glob(join(tempDir, 'dart', '*')):
57 shutil.move(src, outDir) 59 shutil.move(src, outDir)
58 60
59 shutil.rmtree(tempDir) 61 shutil.rmtree(tempDir)
60 os.unlink(archive) 62 os.unlink(archive)
61 63
62 64
63 def GetEditorTemp(): 65 def GetEditorTemp():
64 return join(GetBuildRoot(), 'editor.build.temp') 66 return join(BUILD, 'editor.build.temp')
65 67
66 68
67 def GetDownloadCache(): 69 def GetDownloadCache():
68 return GetEclipseBuildRoot() 70 return GetEclipseBuildRoot()
69 71
70 72
71 def GetBuildRoot():
72 return os.path.abspath(utils.GetBuildRoot(utils.GuessOS()))
73
74
75 def GetEclipseBuildRoot(): 73 def GetEclipseBuildRoot():
76 return join(GetBuildRoot(), 'editor.build.cache') 74 return join(BUILD, 'editor.build.cache')
77 75
78 76
79 def GetSdkPath(): 77 def GetSdkPath():
80 return join(os.path.dirname(OUTPUT), 'dart-sdk') 78 return join(os.path.dirname(OUTPUT), 'dart-sdk')
81 79
82 80
83 def GetOutputParent(): 81 def GetOutputParent():
84 return os.path.dirname(os.path.dirname(OUTPUT)) 82 return os.path.dirname(os.path.dirname(OUTPUT))
85 83
86 84
87 def BuildOptions(): 85 def BuildOptions():
88 options = optparse.OptionParser(usage='usage: %prog [options] <output>') 86 options = optparse.OptionParser(usage='usage: %prog [options] <output>')
89 options.add_option("-m", "--mode", 87 options.add_option("-m", "--mode", metavar='[debug,release]')
90 help='Build variant', 88 options.add_option("-a", "--arch", metavar='[ia32,x64]')
91 metavar='[debug,release]') 89 options.add_option("-o", "--out")
92 options.add_option("-a", "--arch", 90 options.add_option("-b", "--build")
93 help='Target architecture',
94 metavar='[ia32,x64]')
95 return options 91 return options
96 92
97 93
98 def Main(): 94 def Main():
99 global OUTPUT 95 global OUTPUT
100 96 global BUILD
97
101 parser = BuildOptions() 98 parser = BuildOptions()
102 (options, args) = parser.parse_args() 99 (options, args) = parser.parse_args()
103 100
104 if len(args) > 1: 101 if args:
105 parser.print_help() 102 parser.print_help()
106 return 1 103 return 1
107 104
108 osName = utils.GuessOS() 105 osName = utils.GuessOS()
109 mode = 'debug' 106 mode = 'debug'
110 arch = utils.GuessArchitecture() 107 arch = utils.GuessArchitecture()
111 108
112 if args: 109 if not options.build:
110 print >> sys.stderr, 'Error: no --build option specified'
111 exit(1)
112 else:
113 BUILD = options.build
114
115 if not options.out:
116 print >> sys.stderr, 'Error: no --out option specified'
117 exit(1)
118 else:
113 # TODO(devoncarew): Currently we scrape the output path to determine the 119 # TODO(devoncarew): Currently we scrape the output path to determine the
114 # mode and arch. This is fragile and should moved into one location 120 # mode and arch. This is fragile and should moved into one location
115 # (utils.py?) or made more explicit. 121 # (utils.py?) or made more explicit.
116 OUTPUT = args[0] 122 OUTPUT = options.out
117
118 mode = ('release', 'debug')['Debug' in OUTPUT] 123 mode = ('release', 'debug')['Debug' in OUTPUT]
119 arch = ('ia32', 'x64')['X64' in OUTPUT] 124 arch = ('ia32', 'x64')['X64' in OUTPUT]
120 125
121 # Use explicit mode and arch information. 126 # Use explicit mode and arch information.
122 if options.mode: 127 if options.mode:
123 mode = options.mode 128 mode = options.mode
124 if options.arch: 129 if options.arch:
125 arch = options.arch 130 arch = options.arch
126 131
127 # If an output dir was not given, create one from os, mode, and arch.
128 if not OUTPUT:
129 OUTPUT = join(utils.GetBuildRoot(osName, mode, arch), 'editor')
130
131 OUTPUT = os.path.abspath(OUTPUT) 132 OUTPUT = os.path.abspath(OUTPUT)
132 133 BUILD = os.path.abspath(BUILD)
134
133 print "\nBuilding the editor" 135 print "\nBuilding the editor"
134 print " config : %s, %s, %s" % (osName, arch, mode) 136 print " config : %s, %s, %s" % (osName, arch, mode)
135 print " output : %s" % OUTPUT 137 print " output : %s" % OUTPUT
136 138
137 # Clean the editor output directory. 139 # Clean the editor output directory.
138 print ' cleaning %s' % OUTPUT 140 print '\ncleaning %s' % OUTPUT
139 shutil.rmtree(OUTPUT, True) 141 shutil.rmtree(OUTPUT, True)
140 142
141 # These are the valid eclipse build configurations that we can produce. 143 # These are the valid eclipse build configurations that we can produce.
142 # We synthesize these up from the OS_CONFIG and ARCH_CONFIG information. 144 # We synthesize these up from the OS_CONFIG and ARCH_CONFIG information.
143 # macosx, cocoa, x86 & macosx, cocoa, x86_64 145 # macosx, cocoa, x86 & macosx, cocoa, x86_64
144 # win32, win32, x86 & win32, win32, x86_64 146 # win32, win32, x86 & win32, win32, x86_64
145 # linux, gtk, x86 & linux, gtk, x86_64 147 # linux, gtk, x86 & linux, gtk, x86_64
146 148
147 buildConfig = OS_CONFIG[osName] + ', ' + ARCH_CONFIG[arch] 149 buildConfig = OS_CONFIG[osName] + ', ' + ARCH_CONFIG[arch]
148 150
149 print "\ninvoking build_rcp.xml with buildConfig = [%s]\n" % buildConfig 151 print "\ninvoking build_rcp.xml with buildConfig = [%s]\n" % buildConfig
150 152
151 sys.stdout.flush() 153 sys.stdout.flush()
152 sys.stderr.flush() 154 sys.stderr.flush()
153 155
154 buildScript = join('editor', 'tools', 'features', 156 buildScript = join('editor', 'tools', 'features',
155 'com.google.dart.tools.deploy.feature_releng', 157 'com.google.dart.tools.deploy.feature_releng',
156 'build_rcp.xml') 158 'build_rcp.xml')
157 159 build_cmd = [AntPath(),
158 buildRcpStatus = subprocess.call(
159 [AntPath(),
160 '-lib', 160 '-lib',
161 join('third_party', 'bzip2', 'bzip2.jar'), 161 join('third_party', 'bzip2', 'bzip2.jar'),
162 '-Dbuild.out=' + OUTPUT, 162 '-Dbuild.out=' + OUTPUT,
163 '-Dbuild.configs=' + buildConfig, 163 '-Dbuild.configs=' + buildConfig,
164 '-Dbuild.revision=' + utils.GetSVNRevision(), 164 '-Dbuild.revision=' + utils.GetSVNRevision(),
165 '-Ddart.version.full=' + utils.GetVersion(), 165 '-Ddart.version.full=' + utils.GetVersion(),
166 '-Dbuild.root=' + GetEclipseBuildRoot(), 166 '-Dbuild.root=' + GetEclipseBuildRoot(),
167 '-Dbuild.downloads=' + GetDownloadCache(), 167 '-Dbuild.downloads=' + GetDownloadCache(),
168 '-Dbuild.source=' + os.path.abspath('editor'), 168 '-Dbuild.source=' + os.path.abspath('editor'),
169 '-Dbuild.dart.sdk=' + GetSdkPath(), 169 '-Dbuild.dart.sdk=' + GetSdkPath(),
170 '-Dbuild.no.properties=true', 170 '-Dbuild.no.properties=true',
171 '-buildfile', 171 '-buildfile',
172 buildScript], 172 buildScript]
173 shell=utils.IsWindows()) 173 print build_cmd
174 buildRcpStatus = subprocess.call(build_cmd, shell=utils.IsWindows())
174 175
175 if buildRcpStatus != 0: 176 if buildRcpStatus != 0:
176 sys.exit(buildRcpStatus) 177 sys.exit(buildRcpStatus)
177 178
178 # build_rcp.xml will put the built editor archive in the OUTPUT directory 179 # build_rcp.xml will put the built editor archive in the OUTPUT directory
179 # (dart-editor-macosx.cocoa.x86.zip). It contains the editor application in a 180 # (dart-editor-macosx.cocoa.x86.zip). It contains the editor application in a
180 # dart/ subdirectory. We unzip the contents of the archive into OUTPUT. It 181 # dart/ subdirectory. We unzip the contents of the archive into OUTPUT. It
181 # will use the ../dart-sdk directory as its SDK. 182 # will use the ../dart-sdk directory as its SDK.
182 archives = glob.glob(join(OUTPUT, '*.zip')) 183 archives = glob.glob(join(OUTPUT, '*.zip'))
183 184
184 if archives: 185 if archives:
185 ProcessEditorArchive(archives[0], OUTPUT) 186 ProcessEditorArchive(archives[0], OUTPUT)
186 187
187 if os.path.exists(GetEditorTemp()): 188 if os.path.exists(GetEditorTemp()):
188 shutil.rmtree(GetEditorTemp()) 189 shutil.rmtree(GetEditorTemp())
189 190
190 print('\nEditor build successful') 191 print('\nEditor build successful')
191 192
192 193
193 if __name__ == '__main__': 194 if __name__ == '__main__':
194 sys.exit(Main()) 195 sys.exit(Main())
OLDNEW
« no previous file with comments | « dart/editor/build/truncate_files.py ('k') | deps/all.deps/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698