| #!/usr/bin/python2 |
| # |
| # Copyright 2019 The ANGLE Project Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # update_flex_bison_binaries.py: |
| # Helper script to update the version of flex and bison in cloud storage. |
| # These binaries are used to generate the ANGLE translator's lexer and parser. |
| # This script relies on flex and bison binaries to be externally built which |
| # is expected to be a rare operation. It currently only works on Windows and |
| # Linux. It also will update the hashes stored in the tree. For more info see |
| # README.md in this folder. |
| |
| import os |
| import platform |
| import shutil |
| import sys |
| |
| sys.path.append('tools/') |
| import angle_tools |
| |
| |
| def main(): |
| if angle_tools.is_linux: |
| subdir = 'linux' |
| files = ['flex', 'bison'] |
| elif angle_tools.is_windows: |
| subdir = 'windows' |
| files = [ |
| 'flex.exe', 'bison.exe', 'm4.exe', 'msys-2.0.dll', 'msys-iconv-2.dll', |
| 'msys-intl-8.dll' |
| ] |
| else: |
| print('Script must be run on Linux or Windows.') |
| return 1 |
| |
| files = [os.path.join(sys.path[0], subdir, f) for f in files] |
| |
| # Step 1: Upload to cloud storage |
| if not angle_tools.upload_to_google_storage('angle-flex-bison', files): |
| print('Error upload to cloud storage') |
| return 1 |
| |
| # Step 2: Stage new SHA to git |
| if not angle_tools.stage_google_storage_sha1(files): |
| print('Error running git add') |
| return 2 |
| |
| print('') |
| print('The updated SHA has been staged for commit. Please commit and upload.') |
| print('Suggested commit message (please indicate flex/bison versions):') |
| print('----------------------------') |
| print('') |
| print('Update flex and bison binaries for %s.' % platform.system()) |
| print('') |
| print('These binaries were updated using %s.' % os.path.basename(__file__)) |
| print('Please see instructions in tools/flex-bison/README.md.') |
| print('') |
| print('flex is at version TODO.') |
| print('bison is at version TODO.') |
| print('') |
| print('Bug: None') |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |