Roll chromium_revision 84f3f93bac..d150157638 (1140362:1151057)

Change log: 84f3f93bac..d150157638
Full diff: 84f3f93bac..d150157638

Changed dependencies
* fuchsia_vesion: version:10.20221110.2.1..version:12.20230530.1.1
* gn_vesion: git_revision:6f13aaac55a977e1948910942675c69f2b4f7a94..git_revision:e3978de3e8dafb50a2b11efa784e08699a43faf8
* ninja_vesion: version:2@1.8.2.chromium.3..version:2@1.11.1.chromium.6
* reclient_vesion: re_client_version:0.81.1.0853992-gomaip..re_client_version:0.107.1.0b39c4c-gomaip
* src/base: 9d22e0aa98..b4c5ce6cb1
* src/build: 76a2b25f9d..d0c2b4cf4f
* src/buildtools: a26ff314e9..edbefcee3d
* src/buildtools/linux64: git_revision:6f13aaac55a977e1948910942675c69f2b4f7a94..git_revision:e3978de3e8dafb50a2b11efa784e08699a43faf8
* src/buildtools/mac: git_revision:6f13aaac55a977e1948910942675c69f2b4f7a94..git_revision:e3978de3e8dafb50a2b11efa784e08699a43faf8
* src/buildtools/reclient: re_client_version:0.81.1.0853992-gomaip..re_client_version:0.107.1.0b39c4c-gomaip
* src/buildtools/third_party/libc++abi/trunk: 66967963e9..5c8dbff7a4
* src/buildtools/third_party/libunwind/trunk: 88bd83fe09..cd144ced35
* src/buildtools/win: git_revision:6f13aaac55a977e1948910942675c69f2b4f7a94..git_revision:e3978de3e8dafb50a2b11efa784e08699a43faf8
* src/ios: 4acfa83682..241921896b
* src/testing: 1db5c29c08..a13817e1ea
* src/third_party: 223a8c15c8..824e26c9fc
* src/third_party/android_build_tools/aapt2: version:3.6.0-alpha03-5516695-cr0..STY0BXlZxsEhudnlXQFed-B5UpwehcoM0sYqor6qRqsC
* src/third_party/android_deps/libs/com_google_auto_value_auto_value_annotations: version:2@1.9.cr1..version:2@1.10.1.cr1
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations: version:2@2.14.0.cr1..version:2@2.18.0.cr1
* src/third_party/android_deps/libs/com_google_guava_guava: version:2@31.0.1-jre.cr1..version:2@31.1-jre.cr1
* src/third_party/android_deps/libs/org_ow2_asm_asm: version:2@9.2.cr1..version:2@9.5.cr1
* src/third_party/android_deps/libs/org_ow2_asm_asm_analysis: version:2@9.2.cr1..version:2@9.5.cr1
* src/third_party/android_deps/libs/org_ow2_asm_asm_commons: version:2@9.2.cr1..version:2@9.5.cr1
* src/third_party/android_deps/libs/org_ow2_asm_asm_tree: version:2@9.2.cr1..version:2@9.5.cr1
* src/third_party/android_deps/libs/org_ow2_asm_asm_util: version:2@9.2.cr1..version:2@9.5.cr1
* src/third_party/android_deps/libs/org_robolectric_annotations: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_junit: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_nativeruntime: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_pluginapi: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_resources: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_robolectric: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_sandbox: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_shadowapi: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_shadows_framework: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_shadows_playservices: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_utils: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_deps/libs/org_robolectric_utils_reflector: version:2@4.8.1.cr1..version:2@4.10.3.cr1
* src/third_party/android_ndk: https://chromium.googlesource.com/android_ndk.git/+log/8388a2be54..310956bd12
* src/third_party/android_sdk/public: IPzAG-uU5zVMxohpg9-7-N0tQC1TCSW1VbrBFw7Ld04C..EWnL2r7oV5GtE9Ef7GyohyFam42wtMtEKYU4dCb3U1YC
* src/third_party/android_sdk/public: eo5KvW6UVor92LwZai8Zulc624BQZoCu-yn7wa1z_YcC..YWMYkzyxGBgVsty0GhXL1oxbY0pGXQIgFc0Rh7ZMRPYC
* src/third_party/androidx: c8XCgnDa6lP6C1IcJKADz2cE9moc4Ohv4JGKUaWotKYC..Wr5b9WJiFAzJcmjmvQIePIxk5IgpDl62kaGY_SiLxJEC
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/1b724a6b8c..dd5219451c
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/e2a65ffc7d..9f3ef9c2ea
* src/third_party/depot_tools: bcb9577a46..05ab73be51
* src/third_party/freetype/src: 9127c68f59..80a507a6b8
* src/third_party/harfbuzz-ng/src: 2175f5d050..8df5cdbcda
* src/third_party/icu: d8daa943f6..a2961dc659
* src/third_party/jdk: PfRSnxe8Od6WU4zBXomq-zsgcJgWmm3z4gMQNB-r2QcC..2Of9Pe_OdO4xoAATuiLDiMVNebKTNO3WrwJGqil4RosC
* src/third_party/kotlin_stdlib: Mg7371mEUwDQH4_z29HdWqYWVlXN6t2dXX0kIutg_SwC..z4_AYYz2Tw5GKikuiDLTuxxf0NJVGLkC3CVcyiIpc-gC
* src/third_party/kotlinc/current: bCZedwoM-hb1pP1QKzA3P5aR4zjZltqLj4JQpmQsHuUC..J3BAlA7yf4corBopDhlwuT9W4jR1Z9R55KD3BUTVldQC
* src/third_party/ninja: version:2@1.8.2.chromium.3..version:2@1.11.1.chromium.6
* src/third_party/objenesis: 9e367f55e5a65781ee77bfcbaa88fb82b30e75c0..tknDblENYi8IaJYyD6tUahUyHYZlzJ_Y74_QZSz4DpIC
* src/third_party/r8: szXK3tCGU7smsNs4r2mGqxme7d9KWLaOk0_ghbCJxUQC..4Oq32DG2vuDh7Frxj6tH5xyi77sVgBWpvvl4hwvZRR4C
* src/third_party/r8/d8: Qn31g4m2cofkyvGgm46Uzkzds5DKdNYrdPePwRkVnv4C..PwglNZFRNPkBBXdnY9NfrZFk2ULWDTRxhV9rl2kvkpUC
* src/third_party/robolectric: iC6RDM5EH3GEAzR-1shW_Mg0FeeNE5shq1okkFfuuNQC..hzetqh1qFI32FOgQroZvGcGdomrgVBJ6WKRnl1KFw6EC
* src/third_party/sqlite4java: 889660698187baa7c8b0d79f7bf58563125fbd66..LofjKH9dgXIAJhRYCPQlMFywSwxYimrfDeBmaHc-Z5EC
* src/third_party/turbine: Om6yIEXgJxuqghErK29h9RcMH6VaymMbxwScwXmcN6EC..Foa7uRpVoKr4YoayCKc9EERkjpmGOE3DAUTWFLL7gKEC
* src/tools: da6696c8e4..916dfffd61
Added dependencies
* src/third_party/android_deps/libs/org_robolectric_nativeruntime_dist_compat
* src/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk18on
Removed dependency
* src/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk15on
DEPS diff: 84f3f93bac..d150157638/DEPS

Clang version changed llvmorg-17-init-10134-g3da83fba:llvmorg-17-init-12166-g7586aeab
Details: 84f3f93bac..d150157638/tools/clang/scripts/update.py

BUG=None
Change-Id: I5a02f5e9137268bf131f472d05af8b29311ec50e
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/4576442
Reviewed-by: Mirko Bonadei <mbonadei@chromium.org>
Commit-Queue: Prashanth Swaminathan <prashanthsw@google.com>
This commit is contained in:
Prashanth Swaminathan 2023-05-30 20:17:50 -07:00 committed by libyuv LUCI CQ
parent e5a976f6f5
commit ee2819a6ba
2 changed files with 525 additions and 207 deletions

145
DEPS
View File

@ -5,20 +5,20 @@ gclient_gn_args = [
vars = { vars = {
'chromium_git': 'https://chromium.googlesource.com', 'chromium_git': 'https://chromium.googlesource.com',
'chromium_revision': '84f3f93bac10555b37bdc60968a245ac3705e63b', 'chromium_revision': 'd1501576384de23ddf8d8815ee7c95be2f708de5',
'gn_version': 'git_revision:6f13aaac55a977e1948910942675c69f2b4f7a94', 'gn_version': 'git_revision:e3978de3e8dafb50a2b11efa784e08699a43faf8',
# ninja CIPD package version. # ninja CIPD package version.
# https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja
'ninja_version': 'version:2@1.8.2.chromium.3', 'ninja_version': 'version:2@1.11.1.chromium.6',
# reclient CIPD package version # reclient CIPD package version
'reclient_version': 're_client_version:0.81.1.0853992-gomaip', 'reclient_version': 're_client_version:0.107.1.0b39c4c-gomaip',
# Keep the Chromium default of generating location tags. # Keep the Chromium default of generating location tags.
'generate_location_tags': True, 'generate_location_tags': True,
# By default, download the fuchsia sdk from the public sdk directory. # By default, download the fuchsia sdk from the public sdk directory.
'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/gn/', 'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/gn/',
'fuchsia_version': 'version:10.20221110.2.1', 'fuchsia_version': 'version:12.20230530.1.1',
# By default, download the fuchsia images from the fuchsia GCS bucket. # By default, download the fuchsia images from the fuchsia GCS bucket.
'fuchsia_images_bucket': 'fuchsia', 'fuchsia_images_bucket': 'fuchsia',
'checkout_fuchsia': False, 'checkout_fuchsia': False,
@ -31,34 +31,36 @@ vars = {
deps = { deps = {
'src/build': 'src/build':
Var('chromium_git') + '/chromium/src/build' + '@' + '76a2b25f9d788cc319db062614dcaae327e67084', Var('chromium_git') + '/chromium/src/build' + '@' + 'd0c2b4cf4fdd43866e066fb6722099aa8bf4ce79',
'src/buildtools': 'src/buildtools':
Var('chromium_git') + '/chromium/src/buildtools' + '@' + 'a26ff314e935beb622b7a966a52c82f6e1b82524', Var('chromium_git') + '/chromium/src/buildtools' + '@' + 'edbefcee3d2cc45cdb0c60c2b01b673f8ba728bc',
'src/testing': 'src/testing':
Var('chromium_git') + '/chromium/src/testing' + '@' + '1db5c29c0815ea74738d5ebde2d36146e5951ac9', Var('chromium_git') + '/chromium/src/testing' + '@' + 'a13817e1ea0255a375d13aeb3bb2527bd528495b',
'src/third_party': 'src/third_party':
Var('chromium_git') + '/chromium/src/third_party' + '@' + '223a8c15c84763aa3a669c133d2e181696c7017f', Var('chromium_git') + '/chromium/src/third_party' + '@' + '824e26c9fcbd00fccf6cdb712f8f127aae133042',
'src/buildtools/linux64': { 'src/buildtools/linux64': {
'packages': [ 'packages': [
{ {
'package': 'gn/gn/linux-amd64', 'package': 'gn/gn/linux-${{arch}}',
'version': Var('gn_version'), 'version': Var('gn_version'),
} }
], ],
'dep_type': 'cipd', 'dep_type': 'cipd',
'condition': 'checkout_linux', 'condition': 'host_os == "linux"',
}, },
'src/buildtools/mac': { 'src/buildtools/mac': {
'packages': [ 'packages': [
{ {
'package': 'gn/gn/mac-amd64', 'package': 'gn/gn/mac-${{arch}}',
'version': Var('gn_version'), 'version': Var('gn_version'),
} }
], ],
'dep_type': 'cipd', 'dep_type': 'cipd',
'condition': 'checkout_mac', 'condition': 'host_os == "mac"',
}, },
'src/buildtools/win': { 'src/buildtools/win': {
'packages': [ 'packages': [
{ {
@ -67,7 +69,7 @@ deps = {
} }
], ],
'dep_type': 'cipd', 'dep_type': 'cipd',
'condition': 'checkout_win', 'condition': 'host_os == "win"',
}, },
'src/buildtools/reclient': { 'src/buildtools/reclient': {
@ -85,12 +87,12 @@ deps = {
'src/buildtools/third_party/libc++/trunk': 'src/buildtools/third_party/libc++/trunk':
Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'f8279b01085b800724f5c5629dc365b9f040dc53', Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'f8279b01085b800724f5c5629dc365b9f040dc53',
'src/buildtools/third_party/libc++abi/trunk': 'src/buildtools/third_party/libc++abi/trunk':
Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '66967963e99819e766ccd9037feceb05fbd9b88b', Var('chromium_git') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '5c8dbff7a4911fe1e0af0bc1628891e4187a3c90',
'src/buildtools/third_party/libunwind/trunk': 'src/buildtools/third_party/libunwind/trunk':
Var('chromium_git') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '88bd83fe0937f6660014a831656219b78065707f', Var('chromium_git') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'cd144ced35285edaa064a91561969e5b22c219b1',
'src/third_party/catapult': 'src/third_party/catapult':
Var('chromium_git') + '/catapult.git' + '@' + 'e2a65ffc7d97a4e31b223c23ea479d21e67eaebb', Var('chromium_git') + '/catapult.git' + '@' + '9f3ef9c2eae9b1adabde88efe5dcc438ba76e205',
'src/third_party/colorama/src': 'src/third_party/colorama/src':
Var('chromium_git') + '/external/colorama.git' + '@' + '3de9f013df4b470069d03d250224062e8cf15c49', Var('chromium_git') + '/external/colorama.git' + '@' + '3de9f013df4b470069d03d250224062e8cf15c49',
'src/third_party/cpu_features/src': { 'src/third_party/cpu_features/src': {
@ -98,19 +100,19 @@ deps = {
'condition': 'checkout_android', 'condition': 'checkout_android',
}, },
'src/third_party/depot_tools': 'src/third_party/depot_tools':
Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'bcb9577a46b3b2c00ebb49e30b3ea9a3fdd3433a', Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '05ab73be51774f098eb580eda6e96a49e1010b1b',
'src/third_party/freetype/src': 'src/third_party/freetype/src':
Var('chromium_git') + '/chromium/src/third_party/freetype2.git' + '@' + '9127c68f593d9509bc289518bf907c311425e694', Var('chromium_git') + '/chromium/src/third_party/freetype2.git' + '@' + '80a507a6b8e3d2906ad2c8ba69329bd2fb2a85ef',
'src/third_party/googletest/src': 'src/third_party/googletest/src':
Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + 'af29db7ec28d6df1c7f0f745186884091e602e07', Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + 'af29db7ec28d6df1c7f0f745186884091e602e07',
'src/third_party/harfbuzz-ng/src': 'src/third_party/harfbuzz-ng/src':
Var('chromium_git') + '/external/github.com/harfbuzz/harfbuzz.git' + '@' + '2175f5d050743317c563ec9414e0f83a47f7fbc4', Var('chromium_git') + '/external/github.com/harfbuzz/harfbuzz.git' + '@' + '8df5cdbcda495a582e72a7e2ce35d6106401edce',
'src/third_party/libjpeg_turbo': 'src/third_party/libjpeg_turbo':
Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'aa4075f116e4312537d0d3e9dbd5e31096539f94', Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'aa4075f116e4312537d0d3e9dbd5e31096539f94',
'src/third_party/nasm': 'src/third_party/nasm':
Var('chromium_git') + '/chromium/deps/nasm.git' + '@' + '7fc833e889d1afda72c06220e5bed8fb43b2e5ce', Var('chromium_git') + '/chromium/deps/nasm.git' + '@' + '7fc833e889d1afda72c06220e5bed8fb43b2e5ce',
'src/tools': 'src/tools':
Var('chromium_git') + '/chromium/src/tools' + '@' + 'da6696c8e400ed5cde27532467641e7090e60184', Var('chromium_git') + '/chromium/src/tools' + '@' + '916dfffd61cbf61075c47d7b480425d7de1483fd',
# libyuv-only dependencies (not present in Chromium). # libyuv-only dependencies (not present in Chromium).
'src/third_party/gtest-parallel': 'src/third_party/gtest-parallel':
@ -137,7 +139,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/kotlin_stdlib', 'package': 'chromium/third_party/kotlin_stdlib',
'version': 'Mg7371mEUwDQH4_z29HdWqYWVlXN6t2dXX0kIutg_SwC', 'version': 'z4_AYYz2Tw5GKikuiDLTuxxf0NJVGLkC3CVcyiIpc-gC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -147,7 +149,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/kotlinc', 'package': 'chromium/third_party/kotlinc',
'version': 'bCZedwoM-hb1pP1QKzA3P5aR4zjZltqLj4JQpmQsHuUC', 'version': 'J3BAlA7yf4corBopDhlwuT9W4jR1Z9R55KD3BUTVldQC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -155,9 +157,9 @@ deps = {
}, },
'src/third_party/boringssl/src': 'src/third_party/boringssl/src':
'https://boringssl.googlesource.com/boringssl.git' + '@' + '1b724a6b8cefd6d3facf7141222bca57f9e090c7', 'https://boringssl.googlesource.com/boringssl.git' + '@' + 'dd5219451c3ce26221762a15d867edf43b463bb2',
'src/base': { 'src/base': {
'url': Var('chromium_git') + '/chromium/src/base' + '@' + '9d22e0aa98630e53dffc6bf177fd70e99da979bc', 'url': Var('chromium_git') + '/chromium/src/base' + '@' + 'b4c5ce6cb1a7c90de3fdddc80ed439fe87eab443',
'condition': 'checkout_android', 'condition': 'checkout_android',
}, },
'src/third_party/bazel': { 'src/third_party/bazel': {
@ -181,7 +183,7 @@ deps = {
'dep_type': 'cipd', 'dep_type': 'cipd',
}, },
'src/third_party/android_ndk': { 'src/third_party/android_ndk': {
'url': Var('chromium_git') + '/android_ndk.git' + '@' + '8388a2be5421311dc75c5f937aae13d821a27f3d', 'url': Var('chromium_git') + '/android_ndk.git' + '@' + '310956bd122ec2b96049f8d7398de6b717f3452e',
'condition': 'checkout_android', 'condition': 'checkout_android',
}, },
@ -189,7 +191,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/androidx', 'package': 'chromium/third_party/androidx',
'version': 'c8XCgnDa6lP6C1IcJKADz2cE9moc4Ohv4JGKUaWotKYC', 'version': 'Wr5b9WJiFAzJcmjmvQIePIxk5IgpDl62kaGY_SiLxJEC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -228,13 +230,17 @@ deps = {
'package': 'chromium/third_party/android_sdk/public/platforms/android-33', 'package': 'chromium/third_party/android_sdk/public/platforms/android-33',
'version': 'eo5KvW6UVor92LwZai8Zulc624BQZoCu-yn7wa1z_YcC', 'version': 'eo5KvW6UVor92LwZai8Zulc624BQZoCu-yn7wa1z_YcC',
}, },
{
'package': 'chromium/third_party/android_sdk/public/platforms/android-tiramisuprivacysandbox',
'version': 'YWMYkzyxGBgVsty0GhXL1oxbY0pGXQIgFc0Rh7ZMRPYC',
},
{ {
'package': 'chromium/third_party/android_sdk/public/sources/android-31', 'package': 'chromium/third_party/android_sdk/public/sources/android-31',
'version': '_a_BcnANjPYw5mSKlNHa7GFY8yc1kdqj2rmQgac7yUcC', 'version': '_a_BcnANjPYw5mSKlNHa7GFY8yc1kdqj2rmQgac7yUcC',
}, },
{ {
'package': 'chromium/third_party/android_sdk/public/cmdline-tools', 'package': 'chromium/third_party/android_sdk/public/cmdline-tools',
'version': 'IPzAG-uU5zVMxohpg9-7-N0tQC1TCSW1VbrBFw7Ld04C', 'version': 'EWnL2r7oV5GtE9Ef7GyohyFam42wtMtEKYU4dCb3U1YC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -254,7 +260,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_build_tools/aapt2', 'package': 'chromium/third_party/android_build_tools/aapt2',
'version': 'version:3.6.0-alpha03-5516695-cr0', 'version': 'STY0BXlZxsEhudnlXQFed-B5UpwehcoM0sYqor6qRqsC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -324,7 +330,7 @@ deps = {
}, },
'src/third_party/icu': { 'src/third_party/icu': {
'url': Var('chromium_git') + '/chromium/deps/icu.git' + '@' + 'd8daa943f64cd5dd2a55e9baf2e655ab4bfa5ae9', 'url': Var('chromium_git') + '/chromium/deps/icu.git' + '@' + 'a2961dc659b4ae847a9c6120718cc2517ee57d9e',
}, },
'src/third_party/icu4j': { 'src/third_party/icu4j': {
'packages': [ 'packages': [
@ -350,11 +356,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/jdk', 'package': 'chromium/third_party/jdk',
'version': 'PfRSnxe8Od6WU4zBXomq-zsgcJgWmm3z4gMQNB-r2QcC', 'version': '2Of9Pe_OdO4xoAATuiLDiMVNebKTNO3WrwJGqil4RosC',
},
{
'package': 'chromium/third_party/jdk/extras',
'version': 'fkhuOQ3r-zKtWEdKplpo6k0vKkjl-LY_rJTmtzFCQN4C',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -389,7 +391,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/objenesis', 'package': 'chromium/third_party/objenesis',
'version': '9e367f55e5a65781ee77bfcbaa88fb82b30e75c0', 'version': 'tknDblENYi8IaJYyD6tUahUyHYZlzJ_Y74_QZSz4DpIC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -409,7 +411,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/r8', 'package': 'chromium/third_party/r8',
'version': 'szXK3tCGU7smsNs4r2mGqxme7d9KWLaOk0_ghbCJxUQC', 'version': '4Oq32DG2vuDh7Frxj6tH5xyi77sVgBWpvvl4hwvZRR4C',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -422,7 +424,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/r8', 'package': 'chromium/third_party/r8',
'version': 'Qn31g4m2cofkyvGgm46Uzkzds5DKdNYrdPePwRkVnv4C', 'version': 'PwglNZFRNPkBBXdnY9NfrZFk2ULWDTRxhV9rl2kvkpUC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -446,7 +448,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/robolectric', 'package': 'chromium/third_party/robolectric',
'version': 'iC6RDM5EH3GEAzR-1shW_Mg0FeeNE5shq1okkFfuuNQC', 'version': 'hzetqh1qFI32FOgQroZvGcGdomrgVBJ6WKRnl1KFw6EC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -456,7 +458,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/sqlite4java', 'package': 'chromium/third_party/sqlite4java',
'version': '889660698187baa7c8b0d79f7bf58563125fbd66', 'version': 'LofjKH9dgXIAJhRYCPQlMFywSwxYimrfDeBmaHc-Z5EC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -466,7 +468,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/turbine', 'package': 'chromium/third_party/turbine',
'version': 'Om6yIEXgJxuqghErK29h9RcMH6VaymMbxwScwXmcN6EC', 'version': 'Foa7uRpVoKr4YoayCKc9EERkjpmGOE3DAUTWFLL7gKEC',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -479,7 +481,7 @@ deps = {
# iOS deps: # iOS deps:
'src/ios': { 'src/ios': {
'url': Var('chromium_git') + '/chromium/src/ios' + '@' + '4acfa8368290fb0db400dfda11c1f4ee6ce12bdc', 'url': Var('chromium_git') + '/chromium/src/ios' + '@' + '241921896b64f85de9a32d461462913cbff4baeb',
'condition': 'checkout_ios' 'condition': 'checkout_ios'
}, },
@ -1282,7 +1284,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/com_google_auto_value_auto_value_annotations', 'package': 'chromium/third_party/android_deps/libs/com_google_auto_value_auto_value_annotations',
'version': 'version:2@1.9.cr1', 'version': 'version:2@1.10.1.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -1370,7 +1372,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations', 'package': 'chromium/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations',
'version': 'version:2@2.14.0.cr1', 'version': 'version:2@2.18.0.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -1579,7 +1581,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/com_google_guava_guava', 'package': 'chromium/third_party/android_deps/libs/com_google_guava_guava',
'version': 'version:2@31.0.1-jre.cr1', 'version': 'version:2@31.1-jre.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -1850,11 +1852,11 @@ deps = {
'dep_type': 'cipd', 'dep_type': 'cipd',
}, },
'src/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk15on': { 'src/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk18on': {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk15on', 'package': 'chromium/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk18on',
'version': 'version:2@1.68.cr1', 'version': 'version:2@1.72.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2085,7 +2087,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm', 'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm',
'version': 'version:2@9.2.cr1', 'version': 'version:2@9.5.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2096,7 +2098,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_analysis', 'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_analysis',
'version': 'version:2@9.2.cr1', 'version': 'version:2@9.5.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2107,7 +2109,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_commons', 'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_commons',
'version': 'version:2@9.2.cr1', 'version': 'version:2@9.5.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2118,7 +2120,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_tree', 'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_tree',
'version': 'version:2@9.2.cr1', 'version': 'version:2@9.5.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2129,7 +2131,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_util', 'package': 'chromium/third_party/android_deps/libs/org_ow2_asm_asm_util',
'version': 'version:2@9.2.cr1', 'version': 'version:2@9.5.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2151,7 +2153,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_annotations', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_annotations',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2162,7 +2164,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_junit', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_junit',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2173,7 +2175,18 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_nativeruntime', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_nativeruntime',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
},
],
'condition': 'checkout_android',
'dep_type': 'cipd',
},
'src/third_party/android_deps/libs/org_robolectric_nativeruntime_dist_compat': {
'packages': [
{
'package': 'chromium/third_party/android_deps/libs/org_robolectric_nativeruntime_dist_compat',
'version': 'version:2@1.0.1.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2184,7 +2197,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_pluginapi', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_pluginapi',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2195,7 +2208,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2206,7 +2219,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_resources', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_resources',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2217,7 +2230,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_robolectric', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_robolectric',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2228,7 +2241,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_sandbox', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_sandbox',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2239,7 +2252,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadowapi', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadowapi',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2250,7 +2263,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_framework', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_framework',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2261,7 +2274,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_playservices', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_shadows_playservices',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2272,7 +2285,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',
@ -2283,7 +2296,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils_reflector', 'package': 'chromium/third_party/android_deps/libs/org_robolectric_utils_reflector',
'version': 'version:2@4.8.1.cr1', 'version': 'version:2@4.10.3.cr1',
}, },
], ],
'condition': 'checkout_android', 'condition': 'checkout_android',

View File

@ -1,18 +1,14 @@
#!/usr/bin/env vpython3 #!/usr/bin/env vpython3
# Copyright 2017 The LibYuv Project Authors. All rights reserved. # Copyright (c) 2017 The LibYUV project authors. All Rights Reserved.
# #
# Use of this source code is governed by a BSD-style license # Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source # that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found # tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may # in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree. # be found in the AUTHORS file in the root of the source tree.
"""Script to automatically roll dependencies in the LibYUV DEPS file."""
# This is a modified copy of the script in
# https://webrtc.googlesource.com/src/+/master/tools_webrtc/autoroller/roll_deps.py
# customized for libyuv.
"""Script to automatically roll dependencies in the libyuv DEPS file."""
import argparse import argparse
import base64 import base64
@ -25,9 +21,46 @@ import sys
import urllib.request import urllib.request
def FindSrcDirPath():
"""Returns the abs path to the src/ dir of the project."""
src_dir = os.path.dirname(os.path.abspath(__file__))
while os.path.basename(src_dir) != 'src':
src_dir = os.path.normpath(os.path.join(src_dir, os.pardir))
return src_dir
# Skip these dependencies (list without solution name prefix). # Skip these dependencies (list without solution name prefix).
DONT_AUTOROLL_THESE = [ DONT_AUTOROLL_THESE = [
'src/third_party/gflags/src', 'src/third_party/gflags/src',
'src/third_party/mockito/src',
]
# These dependencies are missing in chromium/src/DEPS, either unused or already
# in-tree. For instance, src/base is a part of the Chromium source git repo,
# but we pull it through a subtree mirror, so therefore it isn't listed in
# Chromium's deps but it is in ours.
LIBYUV_ONLY_DEPS = [
'src/base',
'src/build',
'src/buildtools',
'src/ios',
'src/testing',
'src/third_party',
'src/third_party/android_support_test_runner',
'src/third_party/bazel',
'src/third_party/bouncycastle',
'src/third_party/errorprone/lib',
'src/third_party/findbugs',
'src/third_party/gson',
'src/third_party/gtest-parallel',
'src/third_party/guava',
'src/third_party/intellij',
'src/third_party/jsr-305/src',
'src/third_party/ow2_asm',
'src/third_party/proguard',
'src/third_party/ub-uiautomator/lib',
'src/tools',
'src/tools/clang/dsymutil',
] ]
LIBYUV_URL = 'https://chromium.googlesource.com/libyuv/libyuv' LIBYUV_URL = 'https://chromium.googlesource.com/libyuv/libyuv'
@ -37,16 +70,22 @@ CHROMIUM_LOG_TEMPLATE = CHROMIUM_SRC_URL + '/+log/%s'
CHROMIUM_FILE_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s/%s' CHROMIUM_FILE_TEMPLATE = CHROMIUM_SRC_URL + '/+/%s/%s'
COMMIT_POSITION_RE = re.compile('^Cr-Commit-Position: .*#([0-9]+).*$') COMMIT_POSITION_RE = re.compile('^Cr-Commit-Position: .*#([0-9]+).*$')
CLANG_REVISION_RE = re.compile(r'^CLANG_REVISION = \'([0-9a-z-]+)\'$') CLANG_REVISION_RE = re.compile(r'^CLANG_REVISION = \'([-0-9a-z]+)\'$')
ROLL_BRANCH_NAME = 'roll_chromium_revision' ROLL_BRANCH_NAME = 'roll_chromium_revision'
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
CHECKOUT_SRC_DIR = os.path.realpath(os.path.join(SCRIPT_DIR, os.pardir, CHECKOUT_SRC_DIR = FindSrcDirPath()
os.pardir))
CHECKOUT_ROOT_DIR = os.path.realpath(os.path.join(CHECKOUT_SRC_DIR, os.pardir)) CHECKOUT_ROOT_DIR = os.path.realpath(os.path.join(CHECKOUT_SRC_DIR, os.pardir))
# Copied from tools/android/roll/android_deps/.../BuildConfigGenerator.groovy.
ANDROID_DEPS_START = r'=== ANDROID_DEPS Generated Code Start ==='
ANDROID_DEPS_END = r'=== ANDROID_DEPS Generated Code End ==='
# Location of automically gathered android deps.
ANDROID_DEPS_PATH = 'src/third_party/android_deps/'
sys.path.append(os.path.join(CHECKOUT_SRC_DIR, 'build')) sys.path.append(os.path.join(CHECKOUT_SRC_DIR, 'build'))
import find_depot_tools # pylint: disable=wrong-import-position import find_depot_tools
find_depot_tools.add_depot_tools_to_path() find_depot_tools.add_depot_tools_to_path()
CLANG_UPDATE_SCRIPT_URL_PATH = 'tools/clang/scripts/update.py' CLANG_UPDATE_SCRIPT_URL_PATH = 'tools/clang/scripts/update.py'
@ -56,11 +95,26 @@ CLANG_UPDATE_SCRIPT_LOCAL_PATH = os.path.join(CHECKOUT_SRC_DIR, 'tools',
DepsEntry = collections.namedtuple('DepsEntry', 'path url revision') DepsEntry = collections.namedtuple('DepsEntry', 'path url revision')
ChangedDep = collections.namedtuple('ChangedDep', ChangedDep = collections.namedtuple('ChangedDep',
'path url current_rev new_rev') 'path url current_rev new_rev')
CipdDepsEntry = collections.namedtuple('CipdDepsEntry', 'path packages')
VersionEntry = collections.namedtuple('VersionEntry', 'version')
ChangedCipdPackage = collections.namedtuple(
'ChangedCipdPackage', 'path package current_version new_version')
ChangedVersionEntry = collections.namedtuple(
'ChangedVersionEntry', 'path current_version new_version')
ChromiumRevisionUpdate = collections.namedtuple('ChromiumRevisionUpdate',
('current_chromium_rev '
'new_chromium_rev '))
class RollError(Exception): class RollError(Exception):
pass pass
def StrExpansion():
return lambda str_value: str_value
def VarLookup(local_scope): def VarLookup(local_scope):
return lambda var_name: local_scope['vars'][var_name] return lambda var_name: local_scope['vars'][var_name]
@ -68,9 +122,9 @@ def VarLookup(local_scope):
def ParseDepsDict(deps_content): def ParseDepsDict(deps_content):
local_scope = {} local_scope = {}
global_scope = { global_scope = {
'Var': VarLookup(local_scope), 'Str': StrExpansion(),
'Str': lambda s: s, 'Var': VarLookup(local_scope),
'deps_os': {}, 'deps_os': {},
} }
exec(deps_content, global_scope, local_scope) exec(deps_content, global_scope, local_scope)
return local_scope return local_scope
@ -82,11 +136,6 @@ def ParseLocalDepsFile(filename):
return ParseDepsDict(deps_content) return ParseDepsDict(deps_content)
def ParseRemoteCrDepsFile(revision):
deps_content = ReadRemoteCrFile('DEPS', revision)
return ParseDepsDict(deps_content)
def ParseCommitPosition(commit_message): def ParseCommitPosition(commit_message):
for line in reversed(commit_message.splitlines()): for line in reversed(commit_message.splitlines()):
m = COMMIT_POSITION_RE.match(line.strip()) m = COMMIT_POSITION_RE.match(line.strip())
@ -97,15 +146,18 @@ def ParseCommitPosition(commit_message):
sys.exit(-1) sys.exit(-1)
def _RunCommand(command, working_dir=None, ignore_exit_code=False, def _RunCommand(command,
extra_env=None, input_data=None): working_dir=None,
ignore_exit_code=False,
extra_env=None,
input_data=None):
"""Runs a command and returns the output from that command. """Runs a command and returns the output from that command.
If the command fails (exit code != 0), the function will exit the process. If the command fails (exit code != 0), the function will exit the process.
Returns: Returns:
A tuple containing the stdout and stderr outputs as strings. A tuple containing the stdout and stderr outputs as strings.
""" """
working_dir = working_dir or CHECKOUT_SRC_DIR working_dir = working_dir or CHECKOUT_SRC_DIR
logging.debug('CMD: %s CWD: %s', ' '.join(command), working_dir) logging.debug('CMD: %s CWD: %s', ' '.join(command), working_dir)
env = os.environ.copy() env = os.environ.copy()
@ -134,9 +186,9 @@ def _RunCommand(command, working_dir=None, ignore_exit_code=False,
def _GetBranches(): def _GetBranches():
"""Returns a tuple of active,branches. """Returns a tuple of active,branches.
The 'active' is the name of the currently active branch and 'branches' is a The 'active' is the name of the currently active branch and 'branches' is a
list of all branches. list of all branches.
""" """
lines = _RunCommand(['git', 'branch'])[0].split('\n') lines = _RunCommand(['git', 'branch'])[0].split('\n')
branches = [] branches = []
active = '' active = ''
@ -160,9 +212,16 @@ def _ReadGitilesContent(url):
def ReadRemoteCrFile(path_below_src, revision): def ReadRemoteCrFile(path_below_src, revision):
"""Reads a remote Chromium file of a specific revision. Returns a string.""" """Reads a remote Chromium file of a specific revision.
return _ReadGitilesContent(CHROMIUM_FILE_TEMPLATE % (revision,
path_below_src)) Args:
path_below_src: A path to the target file relative to src dir.
revision: Revision to read.
Returns:
A string with file content.
"""
return _ReadGitilesContent(CHROMIUM_FILE_TEMPLATE %
(revision, path_below_src))
def ReadRemoteCrCommit(revision): def ReadRemoteCrCommit(revision):
@ -171,7 +230,13 @@ def ReadRemoteCrCommit(revision):
def ReadUrlContent(url): def ReadUrlContent(url):
"""Connect to a remote host and read the contents. Returns a list of lines.""" """Connect to a remote host and read the contents.
Args:
url: URL to connect to.
Returns:
A list of lines.
"""
conn = urllib.request.urlopen(url) conn = urllib.request.urlopen(url)
try: try:
return conn.readlines() return conn.readlines()
@ -185,59 +250,172 @@ def ReadUrlContent(url):
def GetMatchingDepsEntries(depsentry_dict, dir_path): def GetMatchingDepsEntries(depsentry_dict, dir_path):
"""Gets all deps entries matching the provided path. """Gets all deps entries matching the provided path.
This list may contain more than one DepsEntry object. This list may contain more than one DepsEntry object.
Example: dir_path='src/testing' would give results containing both Example: dir_path='src/testing' would give results containing both
'src/testing/gtest' and 'src/testing/gmock' deps entries for Chromium's DEPS. 'src/testing/gtest' and 'src/testing/gmock' deps entries for Chromium's
Example 2: dir_path='src/build' should return 'src/build' but not DEPS.
'src/buildtools'. Example 2: dir_path='src/build' should return 'src/build' but not
'src/buildtools'.
Returns: Returns:
A list of DepsEntry objects. A list of DepsEntry objects.
""" """
result = [] result = []
for path, depsentry in depsentry_dict.items(): for path, depsentry in depsentry_dict.items():
if path == dir_path: if path == dir_path:
result.append(depsentry) result.append(depsentry)
else: else:
parts = path.split('/') parts = path.split('/')
if all(part == parts[i] if all(part == parts[i] for i, part in enumerate(dir_path.split('/'))):
for i, part in enumerate(dir_path.split('/'))):
result.append(depsentry) result.append(depsentry)
return result return result
def BuildDepsentryDict(deps_dict): def BuildDepsentryDict(deps_dict):
"""Builds a dict of paths to DepsEntry objects from a raw deps dict.""" """Builds a dict of paths to DepsEntry objects from a raw deps dict."""
result = {} result = {}
def AddDepsEntries(deps_subdict): def AddDepsEntries(deps_subdict):
for path, deps_url_spec in deps_subdict.items(): for path, dep in deps_subdict.items():
if isinstance(deps_url_spec, dict): if path in result:
if deps_url_spec.get('dep_type') == 'cipd': continue
continue if not isinstance(dep, dict):
deps_url = deps_url_spec['url'] dep = {'url': dep}
if dep.get('dep_type') == 'cipd':
result[path] = CipdDepsEntry(path, dep['packages'])
else: else:
deps_url = deps_url_spec if '@' not in dep['url']:
if not path in result: continue
if not deps_url: url, revision = dep['url'].split('@')
url, revision = None, None
elif '@' not in deps_url:
# Some dependencies always pull in the latest revision and do not have
# a revision in the URL. Assume 'HEAD' in these cases.
url, revision = deps_url, 'HEAD'
else:
url, revision = deps_url.split('@')
result[path] = DepsEntry(path, url, revision) result[path] = DepsEntry(path, url, revision)
def AddVersionEntry(vars_subdict):
for key, value in vars_subdict.items():
if key in result:
continue
if not key.endswith('_version'):
continue
key = re.sub('_version$', '', key)
result[key] = VersionEntry(value)
AddDepsEntries(deps_dict['deps']) AddDepsEntries(deps_dict['deps'])
for deps_os in ['win', 'mac', 'linux', 'android', 'ios', 'unix']: for deps_os in ['win', 'mac', 'unix', 'android', 'ios', 'unix']:
AddDepsEntries(deps_dict.get('deps_os', {}).get(deps_os, {})) AddDepsEntries(deps_dict.get('deps_os', {}).get(deps_os, {}))
AddVersionEntry(deps_dict.get('vars', {}))
return result return result
def _FindChangedCipdPackages(path, old_pkgs, new_pkgs):
old_pkgs_names = {p['package'] for p in old_pkgs}
new_pkgs_names = {p['package'] for p in new_pkgs}
pkgs_equal = (old_pkgs_names == new_pkgs_names)
added_pkgs = [p for p in new_pkgs_names if p not in old_pkgs_names]
removed_pkgs = [p for p in old_pkgs_names if p not in new_pkgs_names]
assert pkgs_equal, ('Old: %s\n New: %s.\nYou need to do a manual roll '
'and remove/add entries in DEPS so the old and new '
'list match.\nMost likely, you should add \"%s\" and '
'remove \"%s\"' %
(old_pkgs, new_pkgs, added_pkgs, removed_pkgs))
for old_pkg in old_pkgs:
for new_pkg in new_pkgs:
old_version = old_pkg['version']
new_version = new_pkg['version']
if (old_pkg['package'] == new_pkg['package']
and old_version != new_version):
logging.debug('Roll dependency %s to %s', path, new_version)
yield ChangedCipdPackage(path, old_pkg['package'], old_version,
new_version)
def _FindChangedVars(name, old_version, new_version):
if old_version != new_version:
logging.debug('Roll dependency %s to %s', name, new_version)
yield ChangedVersionEntry(name, old_version, new_version)
def _FindNewDeps(old, new):
""" Gather dependencies only in `new` and return corresponding paths. """
old_entries = set(BuildDepsentryDict(old))
new_entries = set(BuildDepsentryDict(new))
return [
path for path in new_entries - old_entries
if path not in DONT_AUTOROLL_THESE
]
def FindAddedDeps(libyuv_deps, new_cr_deps):
"""
Calculate new deps entries of interest.
Ideally, that would mean: only appearing in chromium DEPS
but transitively used in LibYUV.
Since it's hard to compute, we restrict ourselves to a well defined subset:
deps sitting in `ANDROID_DEPS_PATH`.
Otherwise, assumes that's a Chromium-only dependency.
Args:
libyuv_deps: dict of deps as defined in the LibYUV DEPS file.
new_cr_deps: dict of deps as defined in the chromium DEPS file.
Caveat: Doesn't detect a new package in existing dep.
Returns:
A tuple consisting of:
A list of paths added dependencies sitting in `ANDROID_DEPS_PATH`.
A list of paths for other added dependencies.
"""
all_added_deps = _FindNewDeps(libyuv_deps, new_cr_deps)
generated_android_deps = [
path for path in all_added_deps if path.startswith(ANDROID_DEPS_PATH)
]
other_deps = [
path for path in all_added_deps if path not in generated_android_deps
]
return generated_android_deps, other_deps
def FindRemovedDeps(libyuv_deps, new_cr_deps):
"""
Calculate obsolete deps entries.
Ideally, that would mean: no more appearing in chromium DEPS
and not used in LibYUV.
Since it's hard to compute:
1/ We restrict ourselves to a well defined subset:
deps sitting in `ANDROID_DEPS_PATH`.
2/ We rely on existing behavior of CalculateChangeDeps.
I.e. Assumes non-CIPD dependencies are LibYUV-only, don't remove them.
Args:
libyuv_deps: dict of deps as defined in the LibYUV DEPS file.
new_cr_deps: dict of deps as defined in the chromium DEPS file.
Caveat: Doesn't detect a deleted package in existing dep.
Returns:
A tuple consisting of:
A list of paths of dependencies removed from `ANDROID_DEPS_PATH`.
A list of paths of unexpected disappearing dependencies.
"""
all_removed_deps = _FindNewDeps(new_cr_deps, libyuv_deps)
generated_android_deps = sorted(
[path for path in all_removed_deps if path.startswith(ANDROID_DEPS_PATH)])
# Webrtc-only dependencies are handled in CalculateChangedDeps.
other_deps = sorted([
path for path in all_removed_deps
if path not in generated_android_deps and path not in LIBYUV_ONLY_DEPS
])
return generated_android_deps, other_deps
def CalculateChangedDeps(libyuv_deps, new_cr_deps): def CalculateChangedDeps(libyuv_deps, new_cr_deps):
""" """
Calculate changed deps entries based on entries defined in the libyuv DEPS Calculate changed deps entries based on entries defined in the LibYUV DEPS
file: file:
- If a shared dependency with the Chromium DEPS file: roll it to the same - If a shared dependency with the Chromium DEPS file: roll it to the same
revision as Chromium (i.e. entry in the new_cr_deps dict) revision as Chromium (i.e. entry in the new_cr_deps dict)
- If it's a Chromium sub-directory, roll it to the HEAD revision (notice - If it's a Chromium sub-directory, roll it to the HEAD revision (notice
@ -246,9 +424,9 @@ def CalculateChangedDeps(libyuv_deps, new_cr_deps):
- If it's another DEPS entry (not shared with Chromium), roll it to HEAD - If it's another DEPS entry (not shared with Chromium), roll it to HEAD
unless it's configured to be skipped. unless it's configured to be skipped.
Returns: Returns:
A list of ChangedDep objects representing the changed deps. A list of ChangedDep objects representing the changed deps.
""" """
result = [] result = []
libyuv_entries = BuildDepsentryDict(libyuv_deps) libyuv_entries = BuildDepsentryDict(libyuv_deps)
new_cr_entries = BuildDepsentryDict(new_cr_deps) new_cr_entries = BuildDepsentryDict(new_cr_deps)
@ -257,68 +435,117 @@ def CalculateChangedDeps(libyuv_deps, new_cr_deps):
continue continue
cr_deps_entry = new_cr_entries.get(path) cr_deps_entry = new_cr_entries.get(path)
if cr_deps_entry: if cr_deps_entry:
assert type(cr_deps_entry) is type(libyuv_deps_entry)
if isinstance(cr_deps_entry, CipdDepsEntry):
result.extend(
_FindChangedCipdPackages(path, libyuv_deps_entry.packages,
cr_deps_entry.packages))
continue
if isinstance(cr_deps_entry, VersionEntry):
result.extend(
_FindChangedVars(path, libyuv_deps_entry.version,
cr_deps_entry.version))
continue
# Use the revision from Chromium's DEPS file. # Use the revision from Chromium's DEPS file.
new_rev = cr_deps_entry.revision new_rev = cr_deps_entry.revision
assert libyuv_deps_entry.url == cr_deps_entry.url, ( assert libyuv_deps_entry.url == cr_deps_entry.url, (
'Libyuv DEPS entry %s has a different URL (%s) than Chromium (%s).' % 'LibYUV DEPS entry %s has a different URL %s than Chromium %s.' %
(path, libyuv_deps_entry.url, cr_deps_entry.url)) (path, libyuv_deps_entry.url, cr_deps_entry.url))
else: else:
# Use the HEAD of the deps repo. if isinstance(libyuv_deps_entry, DepsEntry):
stdout, _ = _RunCommand(['git', 'ls-remote', libyuv_deps_entry.url, # Use the HEAD of the deps repo.
'HEAD']) stdout, _ = _RunCommand(
new_rev = stdout.strip().split('\t')[0] ['git', 'ls-remote', libyuv_deps_entry.url, 'HEAD'])
new_rev = stdout.strip().split('\t')[0]
else:
# The dependency has been removed from chromium.
# This is handled by FindRemovedDeps.
continue
# Check if an update is necessary. # Check if an update is necessary.
if libyuv_deps_entry.revision != new_rev: if libyuv_deps_entry.revision != new_rev:
logging.debug('Roll dependency %s to %s', path, new_rev) logging.debug('Roll dependency %s to %s', path, new_rev)
result.append(ChangedDep(path, libyuv_deps_entry.url, result.append(
libyuv_deps_entry.revision, new_rev)) ChangedDep(path, libyuv_deps_entry.url, libyuv_deps_entry.revision,
new_rev))
return sorted(result) return sorted(result)
def CalculateChangedClang(new_cr_rev): def CalculateChangedClang(new_cr_rev):
def GetClangRev(lines): def GetClangRev(lines):
for line in lines: for line in lines:
match = CLANG_REVISION_RE.match(line) match = CLANG_REVISION_RE.match(line)
if match: if match:
return match.group(1) return match.group(1)
raise RollError('Could not parse Clang revision from:\n' + '\n'.join(' ' + l for l in lines)) raise RollError('Could not parse Clang revision!')
with open(CLANG_UPDATE_SCRIPT_LOCAL_PATH, 'r') as f: with open(CLANG_UPDATE_SCRIPT_LOCAL_PATH, 'r') as f:
current_lines = f.readlines() current_lines = f.readlines()
current_rev = GetClangRev(current_lines) current_rev = GetClangRev(current_lines)
new_clang_update_py = ReadRemoteCrFile(CLANG_UPDATE_SCRIPT_URL_PATH, new_clang_update_py = ReadRemoteCrFile(CLANG_UPDATE_SCRIPT_URL_PATH,
new_cr_rev).splitlines() new_cr_rev).splitlines()
new_rev = GetClangRev(new_clang_update_py) new_rev = GetClangRev(new_clang_update_py)
return ChangedDep(CLANG_UPDATE_SCRIPT_LOCAL_PATH, None, current_rev, new_rev) return ChangedDep(CLANG_UPDATE_SCRIPT_LOCAL_PATH, None, current_rev, new_rev)
def GenerateCommitMessage(current_cr_rev, new_cr_rev, current_commit_pos, def GenerateCommitMessage(
new_commit_pos, changed_deps_list, clang_change): rev_update,
current_cr_rev = current_cr_rev[0:10] current_commit_pos,
new_cr_rev = new_cr_rev[0:10] new_commit_pos,
changed_deps_list,
added_deps_paths=None,
removed_deps_paths=None,
clang_change=None,
):
current_cr_rev = rev_update.current_chromium_rev[0:10]
new_cr_rev = rev_update.new_chromium_rev[0:10]
rev_interval = '%s..%s' % (current_cr_rev, new_cr_rev) rev_interval = '%s..%s' % (current_cr_rev, new_cr_rev)
git_number_interval = '%s:%s' % (current_commit_pos, new_commit_pos) git_number_interval = '%s:%s' % (current_commit_pos, new_commit_pos)
commit_msg = ['Roll chromium_revision %s (%s)\n' % (rev_interval, commit_msg = [
git_number_interval)] 'Roll chromium_revision %s (%s)\n' % (rev_interval, git_number_interval),
commit_msg.append('Change log: %s' % (CHROMIUM_LOG_TEMPLATE % rev_interval)) 'Change log: %s' % (CHROMIUM_LOG_TEMPLATE % rev_interval),
commit_msg.append('Full diff: %s\n' % (CHROMIUM_COMMIT_TEMPLATE % 'Full diff: %s\n' % (CHROMIUM_COMMIT_TEMPLATE % rev_interval)
rev_interval)) ]
def Section(adjective, deps):
noun = 'dependency' if len(deps) == 1 else 'dependencies'
commit_msg.append('%s %s' % (adjective, noun))
if changed_deps_list: if changed_deps_list:
commit_msg.append('Changed dependencies:') Section('Changed', changed_deps_list)
for c in changed_deps_list: for c in changed_deps_list:
commit_msg.append('* %s: %s/+log/%s..%s' % (c.path, c.url, if isinstance(c, ChangedCipdPackage):
c.current_rev[0:10], commit_msg.append('* %s: %s..%s' %
c.new_rev[0:10])) (c.path, c.current_version, c.new_version))
elif isinstance(c, ChangedVersionEntry):
commit_msg.append('* %s_vesion: %s..%s' %
(c.path, c.current_version, c.new_version))
else:
commit_msg.append('* %s: %s/+log/%s..%s' %
(c.path, c.url, c.current_rev[0:10], c.new_rev[0:10]))
if added_deps_paths:
Section('Added', added_deps_paths)
commit_msg.extend('* %s' % p for p in added_deps_paths)
if removed_deps_paths:
Section('Removed', removed_deps_paths)
commit_msg.extend('* %s' % p for p in removed_deps_paths)
if any([changed_deps_list, added_deps_paths, removed_deps_paths]):
change_url = CHROMIUM_FILE_TEMPLATE % (rev_interval, 'DEPS') change_url = CHROMIUM_FILE_TEMPLATE % (rev_interval, 'DEPS')
commit_msg.append('DEPS diff: %s\n' % change_url) commit_msg.append('DEPS diff: %s\n' % change_url)
else: else:
commit_msg.append('No dependencies changed.') commit_msg.append('No dependencies changed.')
if clang_change.current_rev != clang_change.new_rev: if clang_change and clang_change.current_rev != clang_change.new_rev:
commit_msg.append('Clang version changed %s:%s' % commit_msg.append('Clang version changed %s:%s' %
(clang_change.current_rev, clang_change.new_rev)) (clang_change.current_rev, clang_change.new_rev))
change_url = CHROMIUM_FILE_TEMPLATE % (rev_interval, change_url = CHROMIUM_FILE_TEMPLATE % (rev_interval,
@ -327,38 +554,61 @@ def GenerateCommitMessage(current_cr_rev, new_cr_rev, current_commit_pos,
else: else:
commit_msg.append('No update to Clang.\n') commit_msg.append('No update to Clang.\n')
# TBR needs to be non-empty for Gerrit to process it.
git_author = _RunCommand(['git', 'config', 'user.email'],
working_dir=CHECKOUT_SRC_DIR)[0].strip()
commit_msg.append('TBR=%s' % git_author)
commit_msg.append('BUG=None') commit_msg.append('BUG=None')
return '\n'.join(commit_msg) return '\n'.join(commit_msg)
def UpdateDepsFile(deps_filename, old_cr_revision, new_cr_revision, def UpdateDepsFile(deps_filename, rev_update, changed_deps, new_cr_content):
changed_deps):
"""Update the DEPS file with the new revision.""" """Update the DEPS file with the new revision."""
# Update the chromium_revision variable.
with open(deps_filename, 'rb') as deps_file: with open(deps_filename, 'rb') as deps_file:
deps_content = deps_file.read().decode('utf-8') deps_content = deps_file.read().decode('utf-8')
deps_content = deps_content.replace(old_cr_revision, new_cr_revision)
# Update the chromium_revision variable.
deps_content = deps_content.replace(rev_update.current_chromium_rev,
rev_update.new_chromium_rev)
# Add and remove dependencies. For now: only generated android deps.
# Since gclient cannot add or remove deps, we on the fact that
# these android deps are located in one place we can copy/paste.
deps_re = re.compile(ANDROID_DEPS_START + '.*' + ANDROID_DEPS_END, re.DOTALL)
new_deps = deps_re.search(new_cr_content)
old_deps = deps_re.search(deps_content)
if not new_deps or not old_deps:
faulty = 'Chromium' if not new_deps else 'LibYUV'
raise RollError('Was expecting to find "%s" and "%s"\n'
'in %s DEPS' %
(ANDROID_DEPS_START, ANDROID_DEPS_END, faulty))
deps_content = deps_re.sub(new_deps.group(0), deps_content)
for dep in changed_deps:
if isinstance(dep, ChangedVersionEntry):
deps_content = deps_content.replace(dep.current_version, dep.new_version)
with open(deps_filename, 'wb') as deps_file: with open(deps_filename, 'wb') as deps_file:
deps_file.write(deps_content.encode('utf-8')) deps_file.write(deps_content.encode('utf-8'))
# Update each individual DEPS entry. # Update each individual DEPS entry.
for dep in changed_deps: for dep in changed_deps:
# ChangedVersionEntry types are already been processed.
if isinstance(dep, ChangedVersionEntry):
continue
local_dep_dir = os.path.join(CHECKOUT_ROOT_DIR, dep.path) local_dep_dir = os.path.join(CHECKOUT_ROOT_DIR, dep.path)
if not os.path.isdir(local_dep_dir): if not os.path.isdir(local_dep_dir):
raise RollError( raise RollError(
'Cannot find local directory %s. Make sure the .gclient file\n' 'Cannot find local directory %s. Either run\n'
'contains all platforms in the target_os list, i.e.\n' 'gclient sync --deps=all\n'
'or make sure the .gclient file for your solution contains all '
'platforms in the target_os list, i.e.\n'
'target_os = ["android", "unix", "mac", "ios", "win"];\n' 'target_os = ["android", "unix", "mac", "ios", "win"];\n'
'Then run "gclient sync" again.' % local_dep_dir) 'Then run "gclient sync" again.' % local_dep_dir)
_RunCommand( if isinstance(dep, ChangedCipdPackage):
['gclient', 'setdep', '--revision', '%s@%s' % (dep.path, dep.new_rev)], package = dep.package.format() # Eliminate double curly brackets
working_dir=CHECKOUT_SRC_DIR) update = '%s:%s@%s' % (dep.path, package, dep.new_version)
else:
update = '%s@%s' % (dep.path, dep.new_rev)
_RunCommand(['gclient', 'setdep', '--revision', update],
working_dir=CHECKOUT_SRC_DIR)
def _IsTreeClean(): def _IsTreeClean():
@ -370,9 +620,9 @@ def _IsTreeClean():
return False return False
def _EnsureUpdatedMasterBranch(dry_run): def _EnsureUpdatedMainBranch(dry_run):
current_branch = _RunCommand( current_branch = _RunCommand(['git', 'rev-parse', '--abbrev-ref',
['git', 'rev-parse', '--abbrev-ref', 'HEAD'])[0].splitlines()[0] 'HEAD'])[0].splitlines()[0]
if current_branch != 'main': if current_branch != 'main':
logging.error('Please checkout the main branch and re-run this script.') logging.error('Please checkout the main branch and re-run this script.')
if not dry_run: if not dry_run:
@ -414,19 +664,34 @@ def ChooseCQMode(skip_cq, cq_over, current_commit_pos, new_commit_pos):
return 2 return 2
def _UploadCL(commit_queue_mode): def _GetCcRecipients(changed_deps_list):
"""Returns a list of emails to notify based on the changed deps list.
"""
cc_recipients = []
for c in changed_deps_list:
pass
return cc_recipients
def _UploadCL(commit_queue_mode, add_cc=None):
"""Upload the committed changes as a changelist to Gerrit. """Upload the committed changes as a changelist to Gerrit.
commit_queue_mode: commit_queue_mode:
- 2: Submit to commit queue. - 2: Submit to commit queue.
- 1: Run trybots but do not submit to CQ. - 1: Run trybots but do not submit to CQ.
- 0: Skip CQ, upload only. - 0: Skip CQ, upload only.
"""
add_cc: A list of email addresses to add as CC recipients.
"""
cc_recipients = []
if add_cc:
cc_recipients.extend(add_cc)
cmd = ['git', 'cl', 'upload', '--force', '--bypass-hooks'] cmd = ['git', 'cl', 'upload', '--force', '--bypass-hooks']
if commit_queue_mode >= 2: if commit_queue_mode >= 2:
logging.info('Sending the CL to the CQ...') logging.info('Sending the CL to the CQ...')
cmd.extend(['-o', 'label=Bot-Commit+1']) cmd.extend(['-o', 'label=Bot-Commit+1'])
cmd.extend(['-o', 'label=Commit-Queue+2']) cmd.extend(['-o', 'label=Commit-Queue+2'])
cmd.extend(['--send-mail', '--cc', ','.join(cc_recipients)])
elif commit_queue_mode >= 1: elif commit_queue_mode >= 1:
logging.info('Starting CQ dry run...') logging.info('Starting CQ dry run...')
cmd.extend(['-o', 'label=Commit-Queue+1']) cmd.extend(['-o', 'label=Commit-Queue+1'])
@ -436,31 +701,57 @@ def _UploadCL(commit_queue_mode):
} }
stdout, stderr = _RunCommand(cmd, extra_env=extra_env) stdout, stderr = _RunCommand(cmd, extra_env=extra_env)
logging.debug('Output from "git cl upload":\nstdout:\n%s\n\nstderr:\n%s', logging.debug('Output from "git cl upload":\nstdout:\n%s\n\nstderr:\n%s',
stdout, stderr) stdout, stderr)
def GetRollRevisionRanges(opts, libyuv_deps):
current_cr_rev = libyuv_deps['vars']['chromium_revision']
new_cr_rev = opts.revision
if not new_cr_rev:
stdout, _ = _RunCommand(['git', 'ls-remote', CHROMIUM_SRC_URL, 'HEAD'])
head_rev = stdout.strip().split('\t')[0]
logging.info('No revision specified. Using HEAD: %s', head_rev)
new_cr_rev = head_rev
return ChromiumRevisionUpdate(current_cr_rev, new_cr_rev)
def main(): def main():
p = argparse.ArgumentParser() p = argparse.ArgumentParser()
p.add_argument('--clean', action='store_true', default=False, p.add_argument('--clean',
action='store_true',
default=False,
help='Removes any previous local roll branch.') help='Removes any previous local roll branch.')
p.add_argument('-r', '--revision', p.add_argument('-r',
'--revision',
help=('Chromium Git revision to roll to. Defaults to the ' help=('Chromium Git revision to roll to. Defaults to the '
'Chromium HEAD revision if omitted.')) 'Chromium HEAD revision if omitted.'))
p.add_argument('--dry-run', action='store_true', default=False, p.add_argument('--dry-run',
action='store_true',
default=False,
help=('Calculate changes and modify DEPS, but don\'t create ' help=('Calculate changes and modify DEPS, but don\'t create '
'any local branch, commit, upload CL or send any ' 'any local branch, commit, upload CL or send any '
'tryjobs.')) 'tryjobs.'))
p.add_argument('-i', '--ignore-unclean-workdir', action='store_true', p.add_argument('-i',
'--ignore-unclean-workdir',
action='store_true',
default=False, default=False,
help=('Ignore if the current branch is not main or if there ' help=('Ignore if the current branch is not main or if there '
'are uncommitted changes (default: %(default)s).')) 'are uncommitted changes (default: %(default)s).'))
grp = p.add_mutually_exclusive_group() grp = p.add_mutually_exclusive_group()
grp.add_argument('--skip-cq', action='store_true', default=False, grp.add_argument('--skip-cq',
action='store_true',
default=False,
help='Skip sending the CL to the CQ (default: %(default)s)') help='Skip sending the CL to the CQ (default: %(default)s)')
grp.add_argument('--cq-over', type=int, default=1, grp.add_argument('--cq-over',
type=int,
default=1,
help=('Commit queue dry run if the revision difference ' help=('Commit queue dry run if the revision difference '
'is below this number (default: %(default)s)')) 'is below this number (default: %(default)s)'))
p.add_argument('-v', '--verbose', action='store_true', default=False, p.add_argument('-v',
'--verbose',
action='store_true',
default=False,
help='Be extra verbose in printing of log messages.') help='Be extra verbose in printing of log messages.')
opts = p.parse_args() opts = p.parse_args()
@ -477,38 +768,52 @@ def main():
_RemovePreviousRollBranch(opts.dry_run) _RemovePreviousRollBranch(opts.dry_run)
if not opts.ignore_unclean_workdir: if not opts.ignore_unclean_workdir:
_EnsureUpdatedMasterBranch(opts.dry_run) _EnsureUpdatedMainBranch(opts.dry_run)
new_cr_rev = opts.revision
if not new_cr_rev:
stdout, _ = _RunCommand(['git', 'ls-remote', CHROMIUM_SRC_URL, 'HEAD'])
head_rev = stdout.strip().split('\t')[0]
logging.info('No revision specified. Using HEAD: %s', head_rev)
new_cr_rev = head_rev
deps_filename = os.path.join(CHECKOUT_SRC_DIR, 'DEPS') deps_filename = os.path.join(CHECKOUT_SRC_DIR, 'DEPS')
libyuv_deps = ParseLocalDepsFile(deps_filename) libyuv_deps = ParseLocalDepsFile(deps_filename)
current_cr_rev = libyuv_deps['vars']['chromium_revision']
current_commit_pos = ParseCommitPosition(ReadRemoteCrCommit(current_cr_rev)) rev_update = GetRollRevisionRanges(opts, libyuv_deps)
new_commit_pos = ParseCommitPosition(ReadRemoteCrCommit(new_cr_rev))
new_cr_deps = ParseRemoteCrDepsFile(new_cr_rev) current_commit_pos = ParseCommitPosition(
ReadRemoteCrCommit(rev_update.current_chromium_rev))
new_commit_pos = ParseCommitPosition(
ReadRemoteCrCommit(rev_update.new_chromium_rev))
new_cr_content = ReadRemoteCrFile('DEPS', rev_update.new_chromium_rev)
new_cr_deps = ParseDepsDict(new_cr_content)
changed_deps = CalculateChangedDeps(libyuv_deps, new_cr_deps) changed_deps = CalculateChangedDeps(libyuv_deps, new_cr_deps)
clang_change = CalculateChangedClang(new_cr_rev) # Discard other deps, assumed to be chromium-only dependencies.
commit_msg = GenerateCommitMessage(current_cr_rev, new_cr_rev, new_generated_android_deps, _ = FindAddedDeps(libyuv_deps, new_cr_deps)
current_commit_pos, new_commit_pos, removed_generated_android_deps, other_deps = FindRemovedDeps(
changed_deps, clang_change) libyuv_deps, new_cr_deps)
if other_deps:
raise RollError('LibYUV DEPS entries are missing from Chromium: %s.\n'
'Remove them or add them to either '
'LIBYUV_ONLY_DEPS or DONT_AUTOROLL_THESE.' % other_deps)
clang_change = CalculateChangedClang(rev_update.new_chromium_rev)
commit_msg = GenerateCommitMessage(
rev_update,
current_commit_pos,
new_commit_pos,
changed_deps,
added_deps_paths=new_generated_android_deps,
removed_deps_paths=removed_generated_android_deps,
clang_change=clang_change)
logging.debug('Commit message:\n%s', commit_msg) logging.debug('Commit message:\n%s', commit_msg)
_CreateRollBranch(opts.dry_run) _CreateRollBranch(opts.dry_run)
UpdateDepsFile(deps_filename, current_cr_rev, new_cr_rev, changed_deps)
_LocalCommit(commit_msg, opts.dry_run)
commit_queue_mode = ChooseCQMode(opts.skip_cq, opts.cq_over,
current_commit_pos, new_commit_pos)
logging.info('Uploading CL...')
if not opts.dry_run: if not opts.dry_run:
_UploadCL(commit_queue_mode) UpdateDepsFile(deps_filename, rev_update, changed_deps, new_cr_content)
if _IsTreeClean():
logging.info("No DEPS changes detected, skipping CL creation.")
else:
_LocalCommit(commit_msg, opts.dry_run)
commit_queue_mode = ChooseCQMode(opts.skip_cq, opts.cq_over,
current_commit_pos, new_commit_pos)
logging.info('Uploading CL...')
if not opts.dry_run:
_UploadCL(commit_queue_mode, _GetCcRecipients(changed_deps))
return 0 return 0