| #!/usr/bin/env fuchsia-vendored-python |
| |
| # Copyright 2021 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ |
| Utility to simulate a flutter-with-deps roll into Fuchsia. |
| |
| WARNING: This script currently requires using Google's internal |
| integration repository. See |
| https://fuchsia.dev/internal/intree/development/get-the-source-code?hl=en#add-googles-internal-integration-repository. |
| """ |
| |
| import argparse |
| import http.client |
| import os |
| import re |
| import subprocess |
| import sys |
| import urllib |
| import urllib.parse |
| import urllib.request |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser( |
| description='Simulate a roll into fuchsia.') |
| parser.add_argument( |
| '--flutter-repo', |
| help='A git repository that has been forked from flutter/flutter.') |
| parser.add_argument( |
| '--flutter-revision', help='A git hash within the flutter repo') |
| args = parser.parse_args() |
| |
| # Flutter Repo |
| flutter_repo = args.flutter_repo if args.flutter_repo else "flutter" |
| |
| # Flutter Revision |
| if args.flutter_revision: |
| flutter_revision = args.flutter_revision |
| else: |
| print(f"https://github.com/{flutter_repo}/flutter/commit/HEAD") |
| flutter_revision = urllib.request.urlopen( |
| f"https://github.com/{flutter_repo}/flutter/commit/HEAD") |
| flutter_revision = flutter_revision.read().decode('utf-8').split( |
| 'sha user-select-contain">')[1].split('</span>')[0] |
| print("flutter_revision: " + flutter_revision) |
| |
| # Engine Revision |
| try: |
| engine_revision = urllib.request.urlopen( |
| "https://raw.githubusercontent.com/flutter/flutter/" + |
| flutter_revision + "/bin/internal/engine.version") |
| engine_revision = http.client.parse_headers( |
| engine_revision).as_string().strip() |
| print("engine_revision: " + engine_revision) |
| except urllib.error.HTTPError: |
| print('Invalid flutter revision hash.') |
| return |
| |
| # Dart Revision |
| try: |
| dart_revision = urllib.request.urlopen( |
| "https://raw.githubusercontent.com/flutter/engine/" + |
| engine_revision + "/DEPS") |
| dart_revision = dart_revision.read().decode('utf-8').split( |
| "'dart_revision': '")[1].split("'")[0] |
| print("dart_revision: " + dart_revision) |
| except urllib.error.HTTPError: |
| print('Invalid engine revision hash.') |
| return |
| |
| update_prebuilts = f"jiri edit -package='fuchsia/dart-sdk/${{platform}}=git_revision:{dart_revision}'\ |
| -package='flutter/fuchsia=git_revision:{engine_revision}' \ |
| -package='flutter/sky_engine=git_revision:{engine_revision}' \ |
| -package='flutter/fuchsia-debug-symbols-x64=git_revision:{engine_revision}' \ |
| -package='flutter/fuchsia-debug-symbols-arm64=git_revision:{engine_revision}' \ |
| fuchsia/prebuilts" |
| |
| update_flutter = f"jiri edit -project='external/github.com/flutter/flutter={flutter_revision}' fuchsia/third_party/flutter" |
| |
| os.system(update_prebuilts) |
| os.system(update_flutter) |
| |
| # Update third_party packages locally. |
| os.system("../scripts/dart/update_3p_packages.py") |
| |
| # # Update lock files. |
| os.system("./update-lockfiles.sh") |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |