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

Side by Side Diff: build.py

Issue 5108575248580608: Issue 412 - Make sure release automation creates Safari builds (Closed)
Patch Set: Created May 2, 2014, 7:10 a.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 | releaseAutomation.py » ('j') | releaseAutomation.py » ('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 file is part of the Adblock Plus build tools, 3 # This file is part of the Adblock Plus build tools,
4 # Copyright (C) 2006-2014 Eyeo GmbH 4 # Copyright (C) 2006-2014 Eyeo GmbH
5 # 5 #
6 # Adblock Plus is free software: you can redistribute it and/or modify 6 # Adblock Plus is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 3 as 7 # it under the terms of the GNU General Public License version 3 as
8 # published by the Free Software Foundation. 8 # published by the Free Software Foundation.
9 # 9 #
10 # Adblock Plus is distributed in the hope that it will be useful, 10 # Adblock Plus is distributed in the hope that it will be useful,
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 '-a', 380 '-a',
381 '-p', 381 '-p',
382 '-x=js,jsm', 382 '-x=js,jsm',
383 os.path.join(baseDir, 'lib')] 383 os.path.join(baseDir, 'lib')]
384 if quiet: 384 if quiet:
385 subprocess.check_output(command) 385 subprocess.check_output(command)
386 else: 386 else:
387 subprocess.check_call(command) 387 subprocess.check_call(command)
388 388
389 def runReleaseAutomation(baseDir, scriptName, opts, args, type): 389 def runReleaseAutomation(baseDir, scriptName, opts, args, type):
390 keyFile = None 390 keyFiles = []
391 downloadsRepo = os.path.join(baseDir, '..', 'downloads') 391 downloadsRepo = os.path.join(baseDir, '..', 'downloads')
392 for option, value in opts: 392 for option, value in opts:
393 if option in ('-k', '--key'): 393 if option in ('-k', '--key'):
394 keyFile = value 394 keyFiles.append(value)
395 elif option in ('-d', '--downloads'): 395 elif option in ('-d', '--downloads'):
396 downloadsRepo = value 396 downloadsRepo = value
397 397
398 if len(args) == 0: 398 if len(args) == 0:
399 print 'No version number specified for the release' 399 print 'No version number specified for the release'
400 usage(scriptName, type, 'release') 400 usage(scriptName, type, 'release')
401 return 401 return
402 version = args[0] 402 version = args[0]
403 if re.search(r'[^\d\.]', version): 403 if re.search(r'[^\d\.]', version):
404 print 'Wrong version number format' 404 print 'Wrong version number format'
405 usage(scriptName, type, 'release') 405 usage(scriptName, type, 'release')
406 return 406 return
407 407
408 if keyFile == None: 408 if type == "gecko" and len(keyFiles) == 0:
409 if type == "gecko": 409 print >>sys.stderr, "Warning: no key file specified, creating an unsigned re lease build\n"
410 print >>sys.stderr, "Warning: no key file specified, creating an unsigned release build\n" 410 elif type == "gecko" and len(keyFiles) > 1:
411 else: 411 print >>sys.stderr, "Error: too many key files, only one required"
412 print >>sys.stderr, "Error: key file is required for the release" 412 usage(scriptName, type, 'release')
413 usage(scriptName, type, 'release') 413 return
414 return 414 elif type == "chrome" and len(keyFiles) != 2:
415 print >>sys.stderr, "Error: wrong number of key files specified, two keys (C hrome and Safari) required for the release"
416 usage(scriptName, type, 'release')
417 return
415 418
416 import buildtools.releaseAutomation as releaseAutomation 419 import buildtools.releaseAutomation as releaseAutomation
417 releaseAutomation.run(baseDir, type, version, keyFile, downloadsRepo) 420 releaseAutomation.run(baseDir, type, version, keyFiles, downloadsRepo)
418 421
419 def updatePSL(baseDir, scriptName, opts, args, type): 422 def updatePSL(baseDir, scriptName, opts, args, type):
420 import buildtools.publicSuffixListUpdater as publicSuffixListUpdater 423 import buildtools.publicSuffixListUpdater as publicSuffixListUpdater
421 publicSuffixListUpdater.updatePSL(baseDir) 424 publicSuffixListUpdater.updatePSL(baseDir)
422 425
423 with addCommand(lambda baseDir, scriptName, opts, args, type: usage(scriptName, type), ('help', '-h', '--help')) as command: 426 with addCommand(lambda baseDir, scriptName, opts, args, type: usage(scriptName, type), ('help', '-h', '--help')) as command:
424 command.shortDescription = 'Show this message' 427 command.shortDescription = 'Show this message'
425 428
426 with addCommand(runBuild, 'build') as command: 429 with addCommand(runBuild, 'build') as command:
427 command.shortDescription = 'Create a build' 430 command.shortDescription = 'Create a build'
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 command.addOption('Suppress JsDoc Toolkit output', short='q', long='quiet') 488 command.addOption('Suppress JsDoc Toolkit output', short='q', long='quiet')
486 command.params = '[options] <directory>' 489 command.params = '[options] <directory>'
487 command.supportedTypes = ('gecko') 490 command.supportedTypes = ('gecko')
488 491
489 with addCommand(runReleaseAutomation, 'release') as command: 492 with addCommand(runReleaseAutomation, 'release') as command:
490 command.shortDescription = 'Run release automation' 493 command.shortDescription = 'Run release automation'
491 command.description = 'Note: If you are not the project owner then you '\ 494 command.description = 'Note: If you are not the project owner then you '\
492 'probably don\'t want to run this!\n\n'\ 495 'probably don\'t want to run this!\n\n'\
493 'Runs release automation: creates downloads for the new version, tags '\ 496 'Runs release automation: creates downloads for the new version, tags '\
494 'source code repository as well as downloads and buildtools repository.' 497 'source code repository as well as downloads and buildtools repository.'
495 command.addOption('File containing private key and certificates required to si gn the release', short='k', long='key', value='file', types=('gecko', 'chrome')) 498 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: one key to sign Chrome builds and another to sign the Safari build.', sho rt='k', long='key', value='file', types=('gecko', 'chrome'))
Sebastian Noack 2014/05/02 08:29:09 You should explicitly mention that the key for Chr
Wladimir Palant 2014/05/02 10:50:50 Done.
Sebastian Noack 2014/05/02 10:54:15 Shouldn'T be a big deal for Chrome, since we have
496 command.addOption('Directory containing downloads repository (if omitted ../do wnloads is assumed)', short='d', long='downloads', value='dir') 499 command.addOption('Directory containing downloads repository (if omitted ../do wnloads is assumed)', short='d', long='downloads', value='dir')
497 command.params = '[options] <version>' 500 command.params = '[options] <version>'
498 command.supportedTypes = ('gecko', 'chrome') 501 command.supportedTypes = ('gecko', 'chrome')
499 502
500 with addCommand(updatePSL, 'updatepsl') as command: 503 with addCommand(updatePSL, 'updatepsl') as command:
501 command.shortDescription = 'Updates Public Suffix List' 504 command.shortDescription = 'Updates Public Suffix List'
502 command.description = 'Downloads Public Suffix List (see http://publicsuffix.o rg/) and generates lib/publicSuffixList.js from it.' 505 command.description = 'Downloads Public Suffix List (see http://publicsuffix.o rg/) and generates lib/publicSuffixList.js from it.'
503 command.supportedTypes = ('chrome', 'opera') 506 command.supportedTypes = ('chrome', 'opera')
504 507
505 def getType(baseDir, scriptName, args): 508 def getType(baseDir, scriptName, args):
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 if option in ('-h', '--help'): 569 if option in ('-h', '--help'):
567 usage(scriptName, type, command) 570 usage(scriptName, type, command)
568 sys.exit() 571 sys.exit()
569 commands[command](baseDir, scriptName, opts, args, type) 572 commands[command](baseDir, scriptName, opts, args, type)
570 else: 573 else:
571 print 'Command %s is not supported for this application type' % command 574 print 'Command %s is not supported for this application type' % command
572 usage(scriptName, type) 575 usage(scriptName, type)
573 else: 576 else:
574 print 'Command %s is unrecognized' % command 577 print 'Command %s is unrecognized' % command
575 usage(scriptName, type) 578 usage(scriptName, type)
OLDNEW
« no previous file with comments | « no previous file | releaseAutomation.py » ('j') | releaseAutomation.py » ('J')

Powered by Google App Engine
This is Rietveld