OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 # Script to install a Debian Wheezy sysroot for making official Google Chrome | 6 # Script to install a Debian Wheezy sysroot for making official Google Chrome |
7 # Linux builds. | 7 # Linux builds. |
8 # The sysroot is needed to make Chrome work for Debian Wheezy. | 8 # The sysroot is needed to make Chrome work for Debian Wheezy. |
9 # This script can be run manually but is more often run as part of gclient | 9 # This script can be run manually but is more often run as part of gclient |
10 # hooks. When run from hooks this script should be a no-op on non-linux | 10 # hooks. When run from hooks this script should be a no-op on non-linux |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 elif detected_host_arch == 'arm': | 87 elif detected_host_arch == 'arm': |
88 return 'arm' | 88 return 'arm' |
89 elif detected_host_arch == 'mips': | 89 elif detected_host_arch == 'mips': |
90 return 'mips' | 90 return 'mips' |
91 else: | 91 else: |
92 print "Unknown host arch: %s" % detected_host_arch | 92 print "Unknown host arch: %s" % detected_host_arch |
93 | 93 |
94 return None | 94 return None |
95 | 95 |
96 | 96 |
| 97 def UsingSysroot(target_arch, gyp_defines): |
| 98 # ChromeOS uses a chroot, so doesn't need a sysroot |
| 99 if 'chromeos=1' in gyp_defines: |
| 100 return False |
| 101 |
| 102 # When cross-compiling we always use a sysroot |
| 103 if target_arch in ('arm', 'mips', 'ia32'): |
| 104 return True |
| 105 |
| 106 # Setting use_sysroot=1 GYP_DEFINES forces the use of the sysroot even |
| 107 # when not cross compiling |
| 108 if 'use_sysroot=1' in gyp_defines: |
| 109 return True |
| 110 |
| 111 # Official builds always use the sysroot. |
| 112 if 'branding=Chrome' in gyp_defines and 'buildtype=Official' in gyp_defines: |
| 113 return True |
| 114 |
| 115 return False |
| 116 |
| 117 |
97 def main(): | 118 def main(): |
98 if options.running_as_hook and not sys.platform.startswith('linux'): | 119 if options.running_as_hook and not sys.platform.startswith('linux'): |
99 return 0 | 120 return 0 |
100 | 121 |
101 gyp_defines = os.environ.get('GYP_DEFINES', '') | 122 gyp_defines = os.environ.get('GYP_DEFINES', '') |
102 | 123 |
103 if options.arch: | 124 if options.arch: |
104 target_arch = options.arch | 125 target_arch = options.arch |
105 else: | 126 else: |
106 target_arch = DetectArch(gyp_defines) | 127 target_arch = DetectArch(gyp_defines) |
107 if not target_arch: | 128 if not target_arch: |
108 print 'Unable to detect host architecture' | 129 print 'Unable to detect host architecture' |
109 return 1 | 130 return 1 |
110 | 131 |
111 if options.running_as_hook and target_arch != 'arm' and target_arch != 'mips': | 132 if options.running_as_hook and not UsingSysroot(target_arch, gyp_defines): |
112 # When run from runhooks, only install the sysroot for an Official Chrome | 133 return 0 |
113 # Linux build, except on ARM where we always use a sysroot. | |
114 skip_if_defined = ['branding=Chrome', 'buildtype=Official'] | |
115 skip_if_undefined = ['chromeos=1'] | |
116 for option in skip_if_defined: | |
117 if option not in gyp_defines: | |
118 return 0 | |
119 for option in skip_if_undefined: | |
120 if option in gyp_defines: | |
121 return 0 | |
122 | 134 |
123 # The sysroot directory should match the one specified in build/common.gypi. | 135 # The sysroot directory should match the one specified in build/common.gypi. |
124 # TODO(thestig) Consider putting this else where to avoid having to recreate | 136 # TODO(thestig) Consider putting this else where to avoid having to recreate |
125 # it on every build. | 137 # it on every build. |
126 linux_dir = os.path.dirname(SCRIPT_DIR) | 138 linux_dir = os.path.dirname(SCRIPT_DIR) |
127 if target_arch == 'amd64': | 139 if target_arch == 'amd64': |
128 sysroot = os.path.join(linux_dir, SYSROOT_DIR_AMD64) | 140 sysroot = os.path.join(linux_dir, SYSROOT_DIR_AMD64) |
129 tarball_filename = TARBALL_AMD64 | 141 tarball_filename = TARBALL_AMD64 |
130 tarball_sha1sum = TARBALL_AMD64_SHA1SUM | 142 tarball_sha1sum = TARBALL_AMD64_SHA1SUM |
131 revision = REVISION_AMD64 | 143 revision = REVISION_AMD64 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 parser = optparse.OptionParser('usage: %prog [OPTIONS]') | 196 parser = optparse.OptionParser('usage: %prog [OPTIONS]') |
185 parser.add_option('--running-as-hook', action='store_true', | 197 parser.add_option('--running-as-hook', action='store_true', |
186 default=False, help='Used when running from gclient hooks.' | 198 default=False, help='Used when running from gclient hooks.' |
187 ' In this mode the sysroot will only ' | 199 ' In this mode the sysroot will only ' |
188 'be installed for official Linux ' | 200 'be installed for official Linux ' |
189 'builds or ARM Linux builds') | 201 'builds or ARM Linux builds') |
190 parser.add_option('--arch', type='choice', choices=valid_archs, | 202 parser.add_option('--arch', type='choice', choices=valid_archs, |
191 help='Sysroot architecture: %s' % ', '.join(valid_archs)) | 203 help='Sysroot architecture: %s' % ', '.join(valid_archs)) |
192 options, _ = parser.parse_args() | 204 options, _ = parser.parse_args() |
193 sys.exit(main()) | 205 sys.exit(main()) |
OLD | NEW |