| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2015 The Chromium Authors. All rights reserved. | 2 # Copyright 2015 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 ''' | 6 ''' |
| 7 Script to help uploading and downloading the Google Play services library to | 7 Script to help uploading and downloading the Google Play services library to |
| 8 and from a Google Cloud storage. | 8 and from a Google Cloud storage. |
| 9 ''' | 9 ''' |
| 10 | 10 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 if that has not been done before. | 144 if that has not been done before. |
| 145 ''' | 145 ''' |
| 146 | 146 |
| 147 if not os.path.isdir(args.sdk_root): | 147 if not os.path.isdir(args.sdk_root): |
| 148 logging.debug('Did not find the Android SDK root directory at "%s".', | 148 logging.debug('Did not find the Android SDK root directory at "%s".', |
| 149 args.sdk_root) | 149 args.sdk_root) |
| 150 if not args.force: | 150 if not args.force: |
| 151 logging.info('Skipping, not on an android checkout.') | 151 logging.info('Skipping, not on an android checkout.') |
| 152 return 0 | 152 return 0 |
| 153 | 153 |
| 154 paths = PlayServicesPaths(args.sdk_root) | 154 config = utils.ConfigParser(args.config) |
| 155 paths = PlayServicesPaths(args.sdk_root, config.version_xml_path) |
| 155 | 156 |
| 156 if os.path.isdir(paths.package) and not os.access(paths.package, os.W_OK): | 157 if os.path.isdir(paths.package) and not os.access(paths.package, os.W_OK): |
| 157 logging.error('Failed updating the Google Play Services library. ' | 158 logging.error('Failed updating the Google Play Services library. ' |
| 158 'The location is not writable. Please remove the ' | 159 'The location is not writable. Please remove the ' |
| 159 'directory (%s) and try again.', paths.package) | 160 'directory (%s) and try again.', paths.package) |
| 160 return -2 | 161 return -2 |
| 161 | 162 |
| 162 new_lib_zip_sha1 = os.path.join(SHA1_DIRECTORY, ZIP_FILE_NAME + '.sha1') | 163 new_lib_zip_sha1 = os.path.join(SHA1_DIRECTORY, ZIP_FILE_NAME + '.sha1') |
| 163 | 164 |
| 164 logging.debug('Comparing zip hashes: %s and %s', new_lib_zip_sha1, | 165 logging.debug('Comparing zip hashes: %s and %s', new_lib_zip_sha1, |
| 165 paths.lib_zip_sha1) | 166 paths.lib_zip_sha1) |
| 166 if utils.FileEquals(new_lib_zip_sha1, paths.lib_zip_sha1) and not args.force: | 167 if utils.FileEquals(new_lib_zip_sha1, paths.lib_zip_sha1) and not args.force: |
| 167 logging.info('Skipping, the Google Play services library is up to date.') | 168 logging.info('Skipping, the Google Play services library is up to date.') |
| 168 return 0 | 169 return 0 |
| 169 | 170 |
| 170 config = utils.ConfigParser(args.config) | |
| 171 bucket_path = _VerifyBucketPathFormat(args.bucket, | 171 bucket_path = _VerifyBucketPathFormat(args.bucket, |
| 172 config.version_number, | 172 config.version_number, |
| 173 args.dry_run) | 173 args.dry_run) |
| 174 | 174 |
| 175 tmp_root = tempfile.mkdtemp() | 175 tmp_root = tempfile.mkdtemp() |
| 176 try: | 176 try: |
| 177 # setup the destination directory | 177 # setup the destination directory |
| 178 if not os.path.isdir(paths.package): | 178 if not os.path.isdir(paths.package): |
| 179 os.makedirs(paths.package) | 179 os.makedirs(paths.package) |
| 180 | 180 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 storage bucket. | 253 storage bucket. |
| 254 | 254 |
| 255 By default, a local commit will be made at the end of the operation. | 255 By default, a local commit will be made at the end of the operation. |
| 256 ''' | 256 ''' |
| 257 | 257 |
| 258 # This should function should not run on bots and could fail for many user | 258 # This should function should not run on bots and could fail for many user |
| 259 # and setup related reasons. Also, exceptions here are not caught, so we | 259 # and setup related reasons. Also, exceptions here are not caught, so we |
| 260 # disable breakpad to avoid spamming the logs. | 260 # disable breakpad to avoid spamming the logs. |
| 261 breakpad.IS_ENABLED = False | 261 breakpad.IS_ENABLED = False |
| 262 | 262 |
| 263 paths = PlayServicesPaths(args.sdk_root) | 263 config = utils.ConfigParser(args.config) |
| 264 paths = PlayServicesPaths(args.sdk_root, config.version_xml_path) |
| 264 | 265 |
| 265 if not args.skip_git and utils.IsRepoDirty(constants.DIR_SOURCE_ROOT): | 266 if not args.skip_git and utils.IsRepoDirty(constants.DIR_SOURCE_ROOT): |
| 266 logging.error('The repo is dirty. Please commit or stash your changes.') | 267 logging.error('The repo is dirty. Please commit or stash your changes.') |
| 267 return -1 | 268 return -1 |
| 268 | 269 |
| 269 config = utils.ConfigParser(args.config) | |
| 270 | |
| 271 new_version_number = utils.GetVersionNumberFromLibraryResources( | 270 new_version_number = utils.GetVersionNumberFromLibraryResources( |
| 272 paths.version_xml) | 271 paths.version_xml) |
| 273 logging.debug('comparing versions: new=%d, old=%s', | 272 logging.debug('comparing versions: new=%d, old=%s', |
| 274 new_version_number, config.version_number) | 273 new_version_number, config.version_number) |
| 275 if new_version_number <= config.version_number and not args.force: | 274 if new_version_number <= config.version_number and not args.force: |
| 276 logging.info('The checked in version of the library is already the latest ' | 275 logging.info('The checked in version of the library is already the latest ' |
| 277 'one. No update is needed. Please rerun with --force to skip ' | 276 'one. No update is needed. Please rerun with --force to skip ' |
| 278 'this check.') | 277 'this check.') |
| 279 return 0 | 278 return 0 |
| 280 | 279 |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 check if an update is necessary. | 465 check if an update is necessary. |
| 467 6. lib: Contains the library itself: jar and resources. This is what is | 466 6. lib: Contains the library itself: jar and resources. This is what is |
| 468 downloaded from the cloud storage. | 467 downloaded from the cloud storage. |
| 469 7. version_xml: File that contains the exact Google Play services library | 468 7. version_xml: File that contains the exact Google Play services library |
| 470 version, the one that we track. The version looks like 811500, is used in | 469 version, the one that we track. The version looks like 811500, is used in |
| 471 the code and the on-device APK, as opposed to the SDK package version | 470 the code and the on-device APK, as opposed to the SDK package version |
| 472 which looks like 27.0.0 and is used only by the Android SDK manager. | 471 which looks like 27.0.0 and is used only by the Android SDK manager. |
| 473 | 472 |
| 474 ''' | 473 ''' |
| 475 | 474 |
| 476 def __init__(self, sdk_root): | 475 def __init__(self, sdk_root, version_xml_path): |
| 477 relative_package = os.path.join('extras', 'google', 'google_play_services') | 476 relative_package = os.path.join('extras', 'google', 'google_play_services') |
| 478 relative_lib = os.path.join(relative_package, 'libproject', | 477 relative_lib = os.path.join(relative_package, 'libproject', |
| 479 'google-play-services_lib') | 478 'google-play-services_lib') |
| 480 self.sdk_root = sdk_root | 479 self.sdk_root = sdk_root |
| 481 | 480 |
| 482 self.package = os.path.join(sdk_root, relative_package) | 481 self.package = os.path.join(sdk_root, relative_package) |
| 483 self.lib_zip_sha1 = os.path.join(self.package, ZIP_FILE_NAME + '.sha1') | 482 self.lib_zip_sha1 = os.path.join(self.package, ZIP_FILE_NAME + '.sha1') |
| 484 self.license = os.path.join(self.package, LICENSE_FILE_NAME) | 483 self.license = os.path.join(self.package, LICENSE_FILE_NAME) |
| 485 self.source_prop = os.path.join(self.package, 'source.properties') | 484 self.source_prop = os.path.join(self.package, 'source.properties') |
| 486 | 485 |
| 487 self.lib = os.path.join(sdk_root, relative_lib) | 486 self.lib = os.path.join(sdk_root, relative_lib) |
| 488 self.version_xml = os.path.join(self.lib, 'res', 'values', 'version.xml') | 487 self.version_xml = os.path.join(self.lib, version_xml_path) |
| 489 | 488 |
| 490 | 489 |
| 491 class DummyGsutil(download_from_google_storage.Gsutil): | 490 class DummyGsutil(download_from_google_storage.Gsutil): |
| 492 ''' | 491 ''' |
| 493 Class that replaces Gsutil to use a local directory instead of an online | 492 Class that replaces Gsutil to use a local directory instead of an online |
| 494 bucket. It relies on the fact that Gsutil commands are very similar to shell | 493 bucket. It relies on the fact that Gsutil commands are very similar to shell |
| 495 ones, so for the ones used here (ls, cp), it works to just use them with a | 494 ones, so for the ones used here (ls, cp), it works to just use them with a |
| 496 local directory. | 495 local directory. |
| 497 ''' | 496 ''' |
| 498 | 497 |
| 499 def __init__(self): | 498 def __init__(self): |
| 500 super(DummyGsutil, self).__init__( | 499 super(DummyGsutil, self).__init__( |
| 501 download_from_google_storage.GSUTIL_DEFAULT_PATH) | 500 download_from_google_storage.GSUTIL_DEFAULT_PATH) |
| 502 | 501 |
| 503 def call(self, *args): | 502 def call(self, *args): |
| 504 logging.debug('Calling command "%s"', str(args)) | 503 logging.debug('Calling command "%s"', str(args)) |
| 505 return cmd_helper.GetCmdStatusOutputAndError(args) | 504 return cmd_helper.GetCmdStatusOutputAndError(args) |
| 506 | 505 |
| 507 def check_call(self, *args): | 506 def check_call(self, *args): |
| 508 logging.debug('Calling command "%s"', str(args)) | 507 logging.debug('Calling command "%s"', str(args)) |
| 509 return cmd_helper.GetCmdStatusOutputAndError(args) | 508 return cmd_helper.GetCmdStatusOutputAndError(args) |
| 510 | 509 |
| 511 | 510 |
| 512 if __name__ == '__main__': | 511 if __name__ == '__main__': |
| 513 sys.exit(main(sys.argv[1:])) | 512 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |