diff options
author | Tiancong Wang <tcwang@google.com> | 2020-02-13 21:08:49 +0000 |
---|---|---|
committer | Tiancong Wang <tcwang@google.com> | 2020-02-13 21:08:49 +0000 |
commit | b75f321fc8978b92ce3db6886ccb966768f0c7a8 (patch) | |
tree | 35fa0fbaeaaddd9cc2a126a05eee3527b51e83a8 /deprecated/build_chrome_browser.py | |
parent | cddd960b0ba2eb62c372c0d3176c75f0bd05d5e8 (diff) | |
parent | e617e3393dd24003aa976ece5050bb291070041c (diff) | |
download | toolchain-utils-android11-mainline-media-release.tar.gz |
Merging 18 commit(s) from Chromium's toolchain-utils am: 0ae38c8498 am: 2a19d36a82 am: e617e3393dr_aml_301500702android-mainline-12.0.0_r55android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-b-release
Change-Id: I3f25c7ee034b2e20e37ed941b8eae24eec7043eb
Diffstat (limited to 'deprecated/build_chrome_browser.py')
-rwxr-xr-x | deprecated/build_chrome_browser.py | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/deprecated/build_chrome_browser.py b/deprecated/build_chrome_browser.py new file mode 100755 index 00000000..c3b78870 --- /dev/null +++ b/deprecated/build_chrome_browser.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python2 +# +# Copyright 2010 Google Inc. All Rights Reserved. +"""Script to checkout the ChromeOS source. + +This script sets up the ChromeOS source in the given directory, matching a +particular release of ChromeOS. +""" + +from __future__ import print_function + +__author__ = 'raymes@google.com (Raymes Khoury)' + +import argparse +import os +import sys + +from cros_utils import command_executer +from cros_utils import logger +from cros_utils import misc + + +def Usage(parser, message): + print('ERROR: %s' % message) + parser.print_help() + sys.exit(0) + + +def Main(argv): + """Build Chrome browser.""" + + cmd_executer = command_executer.GetCommandExecuter() + + parser = argparse.ArgumentParser() + parser.add_argument( + '--chromeos_root', + dest='chromeos_root', + help='Target directory for ChromeOS installation.') + parser.add_argument('--version', dest='version') + parser.add_argument( + '--clean', + dest='clean', + default=False, + action='store_true', + help=('Clean the /var/cache/chromeos-chrome/' + 'chrome-src/src/out_$board dir')) + parser.add_argument( + '--env', dest='env', default='', help='Use the following env') + parser.add_argument( + '--ebuild_version', + dest='ebuild_version', + help='Use this ebuild instead of the default one.') + parser.add_argument( + '--cflags', + dest='cflags', + default='', + help='CFLAGS for the ChromeOS packages') + parser.add_argument( + '--cxxflags', + dest='cxxflags', + default='', + help='CXXFLAGS for the ChromeOS packages') + parser.add_argument( + '--ldflags', + dest='ldflags', + default='', + help='LDFLAGS for the ChromeOS packages') + parser.add_argument( + '--board', dest='board', help='ChromeOS target board, e.g. x86-generic') + parser.add_argument( + '--no_build_image', + dest='no_build_image', + default=False, + action='store_true', + help=('Skip build image after building browser.' + 'Defaults to False.')) + parser.add_argument( + '--label', + dest='label', + help='Optional label to apply to the ChromeOS image.') + parser.add_argument( + '--build_image_args', + default='', + dest='build_image_args', + help='Optional arguments to build_image.') + parser.add_argument( + '--cros_workon', + dest='cros_workon', + help='Build using external source tree.') + parser.add_argument( + '--dev', + dest='dev', + default=False, + action='store_true', + help=('Build a dev (eg. writable/large) image. ' + 'Defaults to False.')) + parser.add_argument( + '--debug', + dest='debug', + default=False, + action='store_true', + help=('Build chrome browser using debug mode. ' + 'This option implies --dev. Defaults to false.')) + parser.add_argument( + '--verbose', + dest='verbose', + default=False, + action='store_true', + help='Build with verbose information.') + + options = parser.parse_args(argv) + + if options.chromeos_root is None: + Usage(parser, '--chromeos_root must be set') + + if options.board is None: + Usage(parser, '--board must be set') + + if options.version is None: + logger.GetLogger().LogOutput('No Chrome version given so ' + 'using the default checked in version.') + chrome_version = '' + else: + chrome_version = 'CHROME_VERSION=%s' % options.version + + if options.dev and options.no_build_image: + logger.GetLogger().LogOutput( + "\"--dev\" is meaningless if \"--no_build_image\" is given.") + + if options.debug: + options.dev = True + + options.chromeos_root = misc.CanonicalizePath(options.chromeos_root) + + unmask_env = 'ACCEPT_KEYWORDS=~*' + if options.ebuild_version: + ebuild_version = '=%s' % options.ebuild_version + options.env = '%s %s' % (options.env, unmask_env) + else: + ebuild_version = 'chromeos-chrome' + + if options.cros_workon and not ( + os.path.isdir(options.cros_workon) and os.path.exists( + os.path.join(options.cros_workon, 'src/chromeos/BUILD.gn'))): + Usage(parser, '--cros_workon must be a valid chromium browser checkout.') + + if options.verbose: + options.env = misc.MergeEnvStringWithDict( + options.env, {'USE': 'chrome_internal verbose'}) + else: + options.env = misc.MergeEnvStringWithDict(options.env, + {'USE': 'chrome_internal'}) + if options.debug: + options.env = misc.MergeEnvStringWithDict(options.env, + {'BUILDTYPE': 'Debug'}) + + if options.clean: + misc.RemoveChromeBrowserObjectFiles(options.chromeos_root, options.board) + + chrome_origin = 'SERVER_SOURCE' + if options.cros_workon: + chrome_origin = 'LOCAL_SOURCE' + command = 'cros_workon --board={0} start chromeos-chrome'.format( + options.board) + ret = cmd_executer.ChrootRunCommandWOutput(options.chromeos_root, command) + + # cros_workon start returns non-zero if chromeos-chrome is already a + # cros_workon package. + if ret[0] and ret[2].find( + 'WARNING : Already working on chromeos-base/chromeos-chrome') == -1: + logger.GetLogger().LogFatal('cros_workon chromeos-chrome failed.') + + # Return value is non-zero means we do find the "Already working on..." + # message, keep the information, so later on we do not revert the + # cros_workon status. + cros_workon_keep = (ret[0] != 0) + + # Emerge the browser + emerge_browser_command = ('CHROME_ORIGIN={0} {1} ' + 'CFLAGS="$(portageq-{2} envvar CFLAGS) {3}" ' + 'LDFLAGS="$(portageq-{2} envvar LDFLAGS) {4}" ' + 'CXXFLAGS="$(portageq-{2} envvar CXXFLAGS) {5}" ' + '{6} emerge-{2} --buildpkg {7}').format( + chrome_origin, chrome_version, options.board, + options.cflags, options.ldflags, + options.cxxflags, options.env, ebuild_version) + + cros_sdk_options = '' + if options.cros_workon: + cros_sdk_options = '--chrome_root={0}'.format(options.cros_workon) + + ret = cmd_executer.ChrootRunCommand( + options.chromeos_root, + emerge_browser_command, + cros_sdk_options=cros_sdk_options) + + logger.GetLogger().LogFatalIf(ret, 'build_packages failed') + + if options.cros_workon and not cros_workon_keep: + command = 'cros_workon --board={0} stop chromeos-chrome'.format( + options.board) + ret = cmd_executer.ChrootRunCommand(options.chromeos_root, command) + # cros_workon failed, not a fatal one, just report it. + if ret: + print('cros_workon stop chromeos-chrome failed.') + + if options.no_build_image: + return ret + + # Finally build the image + ret = cmd_executer.ChrootRunCommand(options.chromeos_root, + '{0} {1} {2} {3}'.format( + unmask_env, options.env, + misc.GetBuildImageCommand( + options.board, dev=options.dev), + options.build_image_args)) + + logger.GetLogger().LogFatalIf(ret, 'build_image failed') + + flags_file_name = 'chrome_flags.txt' + flags_file_path = '{0}/src/build/images/{1}/latest/{2}'.format( + options.chromeos_root, options.board, flags_file_name) + flags_file = open(flags_file_path, 'wb') + flags_file.write('CFLAGS={0}\n'.format(options.cflags)) + flags_file.write('CXXFLAGS={0}\n'.format(options.cxxflags)) + flags_file.write('LDFLAGS={0}\n'.format(options.ldflags)) + flags_file.close() + + if options.label: + image_dir_path = '{0}/src/build/images/{1}/latest'.format( + options.chromeos_root, options.board) + real_image_dir_path = os.path.realpath(image_dir_path) + command = 'ln -sf -T {0} {1}/{2}'.format( + os.path.basename(real_image_dir_path),\ + os.path.dirname(real_image_dir_path),\ + options.label) + + ret = cmd_executer.RunCommand(command) + logger.GetLogger().LogFatalIf( + ret, 'Failed to apply symlink label %s' % options.label) + + return ret + + +if __name__ == '__main__': + retval = Main(sys.argv[1:]) + sys.exit(retval) |