Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: build.py

Issue 29337971: Issue 3760 - Removed support for Opera builds (Closed)
Patch Set: Created March 8, 2016, 4:56 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | manifest.json.tmpl » ('j') | manifest.json.tmpl » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This Source Code Form is subject to the terms of the Mozilla Public 3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this 4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 6
7 import os, sys, re, subprocess, shutil, buildtools 7 import os, sys, re, subprocess, shutil, buildtools
8 from getopt import getopt, GetoptError 8 from getopt import getopt, GetoptError
9 from StringIO import StringIO 9 from StringIO import StringIO
10 from zipfile import ZipFile 10 from zipfile import ZipFile
11 11
12 knownTypes = ('gecko', 'chrome', 'opera', 'safari', 'generic') 12 knownTypes = ('gecko', 'chrome', 'safari', 'generic')
13 13
14 class Command(object): 14 class Command(object):
15 name = property(lambda self: self._name) 15 name = property(lambda self: self._name)
16 shortDescription = property(lambda self: self._shortDescription, 16 shortDescription = property(lambda self: self._shortDescription,
17 lambda self, value: self.__dict__.update({'_shortDescription': value})) 17 lambda self, value: self.__dict__.update({'_shortDescription': value}))
18 description = property(lambda self: self._description, 18 description = property(lambda self: self._description,
19 lambda self, value: self.__dict__.update({'_description': value})) 19 lambda self, value: self.__dict__.update({'_description': value}))
20 params = property(lambda self: self._params, 20 params = property(lambda self: self._params,
21 lambda self, value: self.__dict__.update({'_params': value})) 21 lambda self, value: self.__dict__.update({'_params': value}))
22 supportedTypes = property(lambda self: self._supportedTypes, 22 supportedTypes = property(lambda self: self._supportedTypes,
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 releaseBuild = True 179 releaseBuild = True
180 elif option == '--experimental': 180 elif option == '--experimental':
181 experimentalAPI = True 181 experimentalAPI = True
182 outFile = args[0] if len(args) > 0 else None 182 outFile = args[0] if len(args) > 0 else None
183 183
184 if type == 'gecko': 184 if type == 'gecko':
185 import buildtools.packagerGecko as packager 185 import buildtools.packagerGecko as packager
186 packager.createBuild(baseDir, type=type, outFile=outFile, locales=locales, b uildNum=buildNum, 186 packager.createBuild(baseDir, type=type, outFile=outFile, locales=locales, b uildNum=buildNum,
187 releaseBuild=releaseBuild, keyFile=keyFile, 187 releaseBuild=releaseBuild, keyFile=keyFile,
188 multicompartment=multicompartment) 188 multicompartment=multicompartment)
189 elif type == 'chrome' or type == 'opera': 189 elif type == 'chrome':
190 import buildtools.packagerChrome as packager 190 import buildtools.packagerChrome as packager
191 packager.createBuild(baseDir, type=type, outFile=outFile, buildNum=buildNum, 191 packager.createBuild(baseDir, type=type, outFile=outFile, buildNum=buildNum,
192 releaseBuild=releaseBuild, keyFile=keyFile, 192 releaseBuild=releaseBuild, keyFile=keyFile,
193 experimentalAPI=experimentalAPI) 193 experimentalAPI=experimentalAPI)
194 elif type == 'safari': 194 elif type == 'safari':
195 import buildtools.packagerSafari as packager 195 import buildtools.packagerSafari as packager
196 packager.createBuild(baseDir, type=type, outFile=outFile, buildNum=buildNum, 196 packager.createBuild(baseDir, type=type, outFile=outFile, buildNum=buildNum,
197 releaseBuild=releaseBuild, keyFile=keyFile) 197 releaseBuild=releaseBuild, keyFile=keyFile)
198 198
199 199
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 def readLocaleConfig(baseDir, type, metadata): 239 def readLocaleConfig(baseDir, type, metadata):
240 if type == 'gecko': 240 if type == 'gecko':
241 import buildtools.packagerGecko as packager 241 import buildtools.packagerGecko as packager
242 localeDir = packager.getLocalesDir(baseDir) 242 localeDir = packager.getLocalesDir(baseDir)
243 localeConfig = { 243 localeConfig = {
244 'name_format': 'BCP-47', 244 'name_format': 'BCP-47',
245 'file_format': 'gecko-dtd', 245 'file_format': 'gecko-dtd',
246 'target_platforms': {'gecko'}, 246 'target_platforms': {'gecko'},
247 'default_locale': packager.defaultLocale 247 'default_locale': packager.defaultLocale
248 } 248 }
249 elif type == 'chrome' or type == 'opera': 249 elif type == 'chrome':
250 import buildtools.packagerChrome as packager 250 import buildtools.packagerChrome as packager
251 localeDir = os.path.join(baseDir, '_locales') 251 localeDir = os.path.join(baseDir, '_locales')
252 localeConfig = { 252 localeConfig = {
253 'name_format': 'ISO-15897', 253 'name_format': 'ISO-15897',
254 'file_format': 'chrome-json', 254 'file_format': 'chrome-json',
255 'target_platforms': {'chrome'}, 255 'target_platforms': {'chrome'},
256 'default_locale': packager.defaultLocale, 256 'default_locale': packager.defaultLocale,
257 } 257 }
258 else: 258 else:
259 localeDir = os.path.join(baseDir, 259 localeDir = os.path.join(baseDir,
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 452
453 with addCommand(lambda baseDir, scriptName, opts, args, type: usage(scriptName, type), ('help', '-h', '--help')) as command: 453 with addCommand(lambda baseDir, scriptName, opts, args, type: usage(scriptName, type), ('help', '-h', '--help')) as command:
454 command.shortDescription = 'Show this message' 454 command.shortDescription = 'Show this message'
455 455
456 with addCommand(runBuild, 'build') as command: 456 with addCommand(runBuild, 'build') as command:
457 command.shortDescription = 'Create a build' 457 command.shortDescription = 'Create a build'
458 command.description = 'Creates an extension build with given file name. If out put_file is missing a default name will be chosen.' 458 command.description = 'Creates an extension build with given file name. If out put_file is missing a default name will be chosen.'
459 command.params = '[options] [output_file]' 459 command.params = '[options] [output_file]'
460 command.addOption('Only include the given locales (if omitted: all locales not marked as incomplete)', short='l', long='locales', value='l1,l2,l3', types=('ge cko')) 460 command.addOption('Only include the given locales (if omitted: all locales not marked as incomplete)', short='l', long='locales', value='l1,l2,l3', types=('ge cko'))
461 command.addOption('Use given build number (if omitted the build number will be retrieved from Mercurial)', short='b', long='build', value='num') 461 command.addOption('Use given build number (if omitted the build number will be retrieved from Mercurial)', short='b', long='build', value='num')
462 command.addOption('File containing private key and certificates required to si gn the package', short='k', long='key', value='file', types=('gecko', 'chrome', 'opera', 'safari')) 462 command.addOption('File containing private key and certificates required to si gn the package', short='k', long='key', value='file', types=('gecko', 'chrome', 'safari'))
463 command.addOption('Create a build for leak testing', short='m', long='multi-co mpartment', types=('gecko')) 463 command.addOption('Create a build for leak testing', short='m', long='multi-co mpartment', types=('gecko'))
464 command.addOption('Create a release build', short='r', long='release') 464 command.addOption('Create a release build', short='r', long='release')
465 command.addOption('Enable use of experimental APIs', long='experimental') 465 command.addOption('Enable use of experimental APIs', long='experimental')
466 command.supportedTypes = ('gecko', 'chrome', 'opera', 'safari') 466 command.supportedTypes = ('gecko', 'chrome', 'safari')
467 467
468 with addCommand(runAutoInstall, 'autoinstall') as command: 468 with addCommand(runAutoInstall, 'autoinstall') as command:
469 command.shortDescription = 'Install extension automatically' 469 command.shortDescription = 'Install extension automatically'
470 command.description = 'Will automatically install the extension in a browser r unning Extension Auto-Installer. If host parameter is omitted assumes that the b rowser runs on localhost.' 470 command.description = 'Will automatically install the extension in a browser r unning Extension Auto-Installer. If host parameter is omitted assumes that the b rowser runs on localhost.'
471 command.params = '[<host>:]<port>' 471 command.params = '[<host>:]<port>'
472 command.addOption('Create a build for leak testing', short='m', long='multi-co mpartment') 472 command.addOption('Create a build for leak testing', short='m', long='multi-co mpartment')
473 command.supportedTypes = ('gecko') 473 command.supportedTypes = ('gecko')
474 474
475 with addCommand(createDevEnv, 'devenv') as command: 475 with addCommand(createDevEnv, 'devenv') as command:
476 command.shortDescription = 'Set up a development environment' 476 command.shortDescription = 'Set up a development environment'
477 command.description = 'Will set up or update the devenv folder as an unpacked extension folder for development.' 477 command.description = 'Will set up or update the devenv folder as an unpacked extension folder for development.'
478 command.supportedTypes = ('chrome', 'opera', 'safari') 478 command.supportedTypes = ('chrome', 'safari')
479 479
480 with addCommand(setupTranslations, 'setuptrans') as command: 480 with addCommand(setupTranslations, 'setuptrans') as command:
481 command.shortDescription = 'Sets up translation languages' 481 command.shortDescription = 'Sets up translation languages'
482 command.description = 'Sets up translation languages for the project on crowdi n.net.' 482 command.description = 'Sets up translation languages for the project on crowdi n.net.'
483 command.params = '[options] project-key' 483 command.params = '[options] project-key'
484 command.supportedTypes = ('gecko', 'chrome', 'opera', 'generic') 484 command.supportedTypes = ('gecko', 'chrome', 'generic')
485 485
486 with addCommand(updateTranslationMaster, 'translate') as command: 486 with addCommand(updateTranslationMaster, 'translate') as command:
487 command.shortDescription = 'Updates translation master files' 487 command.shortDescription = 'Updates translation master files'
488 command.description = 'Updates the translation master files in the project on crowdin.net.' 488 command.description = 'Updates the translation master files in the project on crowdin.net.'
489 command.params = '[options] project-key' 489 command.params = '[options] project-key'
490 command.supportedTypes = ('gecko', 'chrome', 'opera', 'generic') 490 command.supportedTypes = ('gecko', 'chrome', 'generic')
491 491
492 with addCommand(uploadTranslations, 'uploadtrans') as command: 492 with addCommand(uploadTranslations, 'uploadtrans') as command:
493 command.shortDescription = 'Uploads existing translations' 493 command.shortDescription = 'Uploads existing translations'
494 command.description = 'Uploads already existing translations to the project on crowdin.net.' 494 command.description = 'Uploads already existing translations to the project on crowdin.net.'
495 command.params = '[options] project-key' 495 command.params = '[options] project-key'
496 command.supportedTypes = ('gecko', 'chrome', 'opera', 'generic') 496 command.supportedTypes = ('gecko', 'chrome', 'generic')
497 497
498 with addCommand(getTranslations, 'gettranslations') as command: 498 with addCommand(getTranslations, 'gettranslations') as command:
499 command.shortDescription = 'Downloads translation updates' 499 command.shortDescription = 'Downloads translation updates'
500 command.description = 'Downloads updated translations from crowdin.net.' 500 command.description = 'Downloads updated translations from crowdin.net.'
501 command.params = '[options] project-key' 501 command.params = '[options] project-key'
502 command.supportedTypes = ('gecko', 'chrome', 'opera', 'generic') 502 command.supportedTypes = ('gecko', 'chrome', 'generic')
503 503
504 with addCommand(showDescriptions, 'showdesc') as command: 504 with addCommand(showDescriptions, 'showdesc') as command:
505 command.shortDescription = 'Print description strings for all locales' 505 command.shortDescription = 'Print description strings for all locales'
506 command.description = 'Display description strings for all locales as specifie d in the corresponding meta.properties files.' 506 command.description = 'Display description strings for all locales as specifie d in the corresponding meta.properties files.'
507 command.addOption('Only include the given locales', short='l', long='locales', value='l1,l2,l3') 507 command.addOption('Only include the given locales', short='l', long='locales', value='l1,l2,l3')
508 command.params = '[options]' 508 command.params = '[options]'
509 command.supportedTypes = ('gecko') 509 command.supportedTypes = ('gecko')
510 510
511 with addCommand(generateDocs, 'docs') as command: 511 with addCommand(generateDocs, 'docs') as command:
512 command.shortDescription = 'Generate documentation (requires node.js)' 512 command.shortDescription = 'Generate documentation (requires node.js)'
513 command.description = 'Generate documentation files and write them into the sp ecified directory. This operation requires JsDoc 3 to be installed.' 513 command.description = 'Generate documentation files and write them into the sp ecified directory. This operation requires JsDoc 3 to be installed.'
514 command.addOption('Suppress JsDoc output', short='q', long='quiet') 514 command.addOption('Suppress JsDoc output', short='q', long='quiet')
515 command.params = '[options] <directory>' 515 command.params = '[options] <directory>'
516 command.supportedTypes = ('gecko', 'chrome') 516 command.supportedTypes = ('gecko', 'chrome')
517 517
518 with addCommand(runReleaseAutomation, 'release') as command: 518 with addCommand(runReleaseAutomation, 'release') as command:
519 command.shortDescription = 'Run release automation' 519 command.shortDescription = 'Run release automation'
520 command.description = 'Note: If you are not the project owner then you '\ 520 command.description = 'Note: If you are not the project owner then you '\
521 'probably don\'t want to run this!\n\n'\ 521 'probably don\'t want to run this!\n\n'\
522 'Runs release automation: creates downloads for the new version, tags '\ 522 'Runs release automation: creates downloads for the new version, tags '\
523 'source code repository as well as downloads and buildtools repository.' 523 'source code repository as well as downloads and buildtools repository.'
524 command.addOption('File containing private key and certificates required to si gn the release. Note that for Chrome releases this option needs to be specified twice: first a key to sign Chrome/Opera builds, then another to sign the Safari build.', short='k', long='key', value='file', types=('gecko', 'chrome')) 524 command.addOption('File containing private key and certificates required to si gn the release. Note that for Chrome releases this option needs to be specified twice: first a key to sign Chrome/Opera builds, then another to sign the Safari build.', short='k', long='key', value='file', types=('gecko', 'chrome'))
kzar 2016/03/08 17:45:11 Nit: I guess this documentation should be changed
Sebastian Noack 2016/03/08 18:26:34 Done.
525 command.addOption('Directory containing downloads repository (if omitted ../do wnloads is assumed)', short='d', long='downloads', value='dir') 525 command.addOption('Directory containing downloads repository (if omitted ../do wnloads is assumed)', short='d', long='downloads', value='dir')
526 command.params = '[options] <version>' 526 command.params = '[options] <version>'
527 command.supportedTypes = ('gecko', 'chrome') 527 command.supportedTypes = ('gecko', 'chrome')
528 528
529 with addCommand(updatePSL, 'updatepsl') as command: 529 with addCommand(updatePSL, 'updatepsl') as command:
530 command.shortDescription = 'Updates Public Suffix List' 530 command.shortDescription = 'Updates Public Suffix List'
531 command.description = 'Downloads Public Suffix List (see http://publicsuffix.o rg/) and generates lib/publicSuffixList.js from it.' 531 command.description = 'Downloads Public Suffix List (see http://publicsuffix.o rg/) and generates lib/publicSuffixList.js from it.'
532 command.supportedTypes = ('chrome', 'opera') 532 command.supportedTypes = ('chrome',)
533 533
534 def getType(baseDir, scriptName, args): 534 def getType(baseDir, scriptName, args):
535 # Look for an explicit type parameter (has to be the first parameter) 535 # Look for an explicit type parameter (has to be the first parameter)
536 if len(args) >= 2 and args[0] == '-t': 536 if len(args) >= 2 and args[0] == '-t':
537 type = args[1] 537 type = args[1]
538 del args[1] 538 del args[1]
539 del args[0] 539 del args[0]
540 if type not in knownTypes: 540 if type not in knownTypes:
541 print ''' 541 print '''
542 Unknown type %s specified, supported types are: %s 542 Unknown type %s specified, supported types are: %s
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 if option in ('-h', '--help'): 595 if option in ('-h', '--help'):
596 usage(scriptName, type, command) 596 usage(scriptName, type, command)
597 sys.exit() 597 sys.exit()
598 commands[command](baseDir, scriptName, opts, args, type) 598 commands[command](baseDir, scriptName, opts, args, type)
599 else: 599 else:
600 print 'Command %s is not supported for this application type' % command 600 print 'Command %s is not supported for this application type' % command
601 usage(scriptName, type) 601 usage(scriptName, type)
602 else: 602 else:
603 print 'Command %s is unrecognized' % command 603 print 'Command %s is unrecognized' % command
604 usage(scriptName, type) 604 usage(scriptName, type)
OLDNEW
« no previous file with comments | « no previous file | manifest.json.tmpl » ('j') | manifest.json.tmpl » ('J')

Powered by Google App Engine
This is Rietveld