目的
前回 はChromium全体について Line of Code (LOC) を用いて規模を確認した
今回は Chromium 内部をもう少し探っていく
結論
- Chromium のレンダリングエンジン blink は third_party ディレクトリに存在
- Chromium のJavaScriptエンジン v8 は Chromium のリポジトリとは別に管理
- Chromium は利用する多数のライブラリを専用に抱える。そのライブラリ群は Chromium のリポジトリとは別リポジトリで管理
- Blink, v8 それぞれの規模は下記の通り
Component | LOC(C/C++/Assembly/Java) |
---|---|
blink | 1,760,045 |
v8 | 1,483,480 |
chromium/src のディレクトリ毎のLOC
src 以下のファイルとディレクトリについてLOCを測る
$ cd ~/work/chromium/
$ time for d in src/*; \
do ~/work/cloc-1.88/cloc --quiet --csv --timeout=60 $d | \
tail +3 | sed "s@^@$d,@"; \
done | \
sed 1i"dir, files, language, blank, comment, code" > ../cloc_chromium_src.csv
real 6m2.908s
user 5m46.510s
sys 0m16.376s
$ cat ../cloc_chromium_src.csv | head
dir, files, language, blank, comment, code
src/android_webview,416,Java,11695,11418,64403
src/android_webview,175,C++,5058,2653,24321
src/android_webview,156,C/C++ Header,2299,1709,6700
src/android_webview,53,Markdown,1108,0,3808
src/android_webview,221,XML,151,289,3508
src/android_webview,16,Python,660,776,2402
src/android_webview,41,HTML,38,4,720
src/android_webview,1,JSON,0,0,271
src/android_webview,3,JavaScript,30,21,166
dir | LOC |
---|---|
src/third_party | 10,670,497 |
src/chrome | 5,350,427 |
src/components | 2,370,634 |
src/content | 1,141,190 |
src/ui | 1,046,091 |
src/net | 714,807 |
src/tools | 667,950 |
src/ios | 538,292 |
src/ash | 509,143 |
src/media | 439,579 |
src/chromeos | 379,771 |
src/base | 356,995 |
src/testing | 351,565 |
src/gpu | 312,811 |
src/extensions | 278,730 |
src/services | 269,956 |
src/cc | 222,584 |
src/native_client_sdk | 208,934 |
src/ppapi | 162,051 |
src/remoting | 161,515 |
src/device | 157,469 |
src/chromecast | 116,089 |
src/android_webview | 106,476 |
src/mojo | 94,043 |
src/sandbox | 64,292 |
src/build | 61,501 |
src/storage | 56,590 |
src/docs | 56,024 |
src/weblayer | 55,395 |
src/google_apis | 35,610 |
src/fuchsia | 25,295 |
src/pdf | 21,943 |
src/headless | 17,238 |
src/ipc | 15,733 |
src/printing | 14,912 |
src/url | 13,108 |
src/courgette | 12,228 |
src/sql | 9,704 |
src/dbus | 9,599 |
src/skia | 8,445 |
src/jingle | 6,981 |
src/crypto | 5,925 |
src/rlz | 5,529 |
src/gin | 5,478 |
src/PRESUBMIT.py | 4,090 |
src/styleguide | 3,463 |
src/PRESUBMIT_test.py | 3,156 |
src/apps | 2,423 |
src/cloud_print | 1,963 |
src/buildtools | 1,501 |
src/infra | 1,413 |
src/google_update | 1,138 |
src/codelabs | 480 |
src/PRESUBMIT_test_mocks.py | 162 |
src/CODE_OF_CONDUCT.md | 68 |
src/build_overrides | 23 |
src/README.md | 13 |
C, C++, Assembly, Java で確認
テスト用のHTMLやJavaScript等が多く含まれるため、今回も C, C++, Assembly, Java に絞って確認する
third_party, chrome が約350万LOCと以前巨大な規模ではあることが確認できる
dir | LOC |
---|---|
src/third_party | 3,544,748 |
src/chrome | 3,478,179 |
src/components | 1,658,843 |
src/content | 901,105 |
src/ui | 697,196 |
src/net | 532,119 |
src/media | 422,926 |
src/ash | 412,267 |
src/base | 343,026 |
src/chromeos | 314,487 |
src/gpu | 293,099 |
src/services | 258,855 |
src/extensions | 236,711 |
src/cc | 221,712 |
src/device | 142,905 |
src/ppapi | 136,546 |
src/remoting | 127,667 |
src/chromecast | 108,793 |
src/android_webview | 95,424 |
src/native_client_sdk | 83,531 |
src/mojo | 73,801 |
src/ios | 72,722 |
src/sandbox | 61,725 |
src/storage | 56,191 |
src/weblayer | 52,430 |
src/tools | 48,036 |
src/google_apis | 33,970 |
src/fuchsia | 24,214 |
src/pdf | 21,926 |
src/ipc | 15,665 |
src/printing | 14,107 |
src/url | 13,014 |
src/headless | 12,060 |
src/courgette | 11,623 |
src/sql | 9,630 |
src/dbus | 9,593 |
src/testing | 7,266 |
src/jingle | 6,981 |
src/skia | 6,930 |
src/crypto | 5,738 |
src/gin | 5,461 |
src/rlz | 5,257 |
src/apps | 2,423 |
src/build | 1,747 |
src/cloud_print | 1,619 |
src/codelabs | 241 |
src/buildtools | 59 |
third_party 内を確認する
$ time for d in src/third_party/*; \
do ~/work/cloc-1.88/cloc --quiet --csv --timeout=60 $d | \
tail +3 | sed "s@^@$d,@"; \
done | \
sed 1i"dir, files, language, blank, comment, code" > ../cloc_chromium_src_third_party.csv ;
real 3m49.084s
user 3m34.197s
sys 0m15.386s
raiko@raikovm:~/work/chromium$ cat ../cloc_chromium_src_third_party.csv | head
dir, files, language, blank, comment, code
src/third_party/abseil-cpp,333,C++,15358,15320,93190
src/third_party/abseil-cpp,264,C/C++ Header,8936,27011,38682
src/third_party/abseil-cpp,7,Windows Module Definition,0,0,12565
src/third_party/abseil-cpp,27,CMake,439,563,6025
src/third_party/abseil-cpp,22,Bazel,451,355,5672
src/third_party/abseil-cpp,8,Pascal,334,1923,722
src/third_party/abseil-cpp,2,SQL,0,0,657
src/third_party/abseil-cpp,14,Bourne Shell,126,292,632
src/third_party/abseil-cpp,6,Python,144,161,552
Chromiumのレンダリングエンジンである blink が 176万LOC と半分近くを締めている
dir | LOC |
---|---|
src/third_party/blink | 1,760,045 |
src/third_party/protobuf | 340,312 |
src/third_party/boringssl | 227,051 |
src/third_party/libxml | 153,944 |
src/third_party/abseil-cpp | 131,872 |
src/third_party/crashpad | 100,740 |
src/third_party/win_build_output | 94,840 |
src/third_party/hunspell | 72,325 |
src/third_party/libwebp | 62,410 |
src/third_party/opus | 54,366 |
src/third_party/tcmalloc | 52,179 |
src/third_party/libaom | 44,609 |
src/third_party/libvpx | 39,354 |
src/third_party/wtl | 39,242 |
src/third_party/libxslt | 31,300 |
src/third_party/brotli | 31,247 |
src/third_party/libpng | 28,171 |
src/third_party/unrar | 23,636 |
src/third_party/khronos | 23,420 |
src/third_party/zlib | 20,982 |
src/third_party/mesa_headers | 15,729 |
src/third_party/webdriver | 15,010 |
src/third_party/libusb | 13,822 |
src/third_party/ots | 12,164 |
src/third_party/fontconfig | 10,973 |
src/third_party/lzma_sdk | 10,362 |
src/third_party/android_crazy_linker | 10,197 |
src/third_party/wds | 9,895 |
src/third_party/shell-encryption | 9,511 |
src/third_party/afl | 8,446 |
src/third_party/weston | 7,631 |
src/third_party/libjingle_xmpp | 7,532 |
src/third_party/inspector_protocol | 6,650 |
src/third_party/wayland | 6,074 |
src/third_party/qcms | 5,607 |
src/third_party/pffft | 4,697 |
src/third_party/sqlite | 4,166 |
src/third_party/fft2d | 3,697 |
src/third_party/woff2 | 3,664 |
src/third_party/zxcvbn-cpp | 3,589 |
src/third_party/ijar | 3,523 |
src/third_party/libXNVCtrl | 2,739 |
src/third_party/libaddressinput | 2,718 |
src/third_party/leveldatabase | 2,560 |
src/third_party/decklink | 2,396 |
src/third_party/s2cellid | 2,335 |
src/third_party/simplejson | 2,318 |
src/third_party/private_membership | 2,132 |
src/third_party/gvr-android-sdk | 1,992 |
src/third_party/android_data_chart | 1,628 |
src/third_party/liburlpattern | 1,395 |
src/third_party/private-join-and-compute | 1,323 |
src/third_party/libbrlapi | 1,260 |
src/third_party/android_swipe_refresh | 1,199 |
src/third_party/x11proto | 1,150 |
src/third_party/android_deps | 1,109 |
src/third_party/opencv | 1,035 |
src/third_party/libsecret | 1,010 |
src/third_party/google_trust_services | 903 |
src/third_party/gif_player | 807 |
src/third_party/modp_b64 | 640 |
src/third_party/webrtc_overrides | 582 |
src/third_party/android_opengl | 577 |
src/third_party/pycoverage | 530 |
src/third_party/ocmock | 503 |
src/third_party/rnnoise | 481 |
src/third_party/one_euro_filter | 346 |
src/third_party/microsoft_webauthn | 314 |
src/third_party/android_media | 271 |
src/third_party/libx11 | 260 |
src/third_party/grpc | 243 |
src/third_party/bspatch | 237 |
src/third_party/libudev | 225 |
src/third_party/googletest | 223 |
src/third_party/sudden_motion_sensor | 207 |
src/third_party/ashmem | 207 |
src/third_party/ukey2 | 203 |
src/third_party/libva_protected_content | 196 |
src/third_party/markupsafe | 178 |
src/third_party/speech-dispatcher | 176 |
src/third_party/dav1d | 172 |
src/third_party/minizip | 159 |
src/third_party/apple_apsl | 154 |
src/third_party/freetype | 149 |
src/third_party/iccjpeg | 147 |
src/third_party/robolectric | 144 |
src/third_party/harfbuzz-ng | 139 |
src/third_party/liblouis | 122 |
src/third_party/breakpad | 107 |
src/third_party/android_provider | 100 |
src/third_party/gvr-android-keyboard | 97 |
src/third_party/libprotobuf-mutator | 83 |
src/third_party/snappy | 66 |
src/third_party/lcov | 61 |
src/third_party/jsoncpp | 61 |
src/third_party/expat | 56 |
src/third_party/mozilla | 44 |
src/third_party/ced | 33 |
src/third_party/v4l-utils | 32 |
src/third_party/libxcb-keysyms | 31 |
src/third_party/libsync | 24 |
src/third_party/widevine | 15 |
src/third_party/libphonenumber | 7 |
src/third_party/r8 | 6 |
src/third_party/crc32c | 0 |
JavaScriptエンジン v8 はどこだ?
レンダリングエンジンの blink が176万LOCならば、JavaScriptエンジンの v8 はどの程度の規模なのか?
これまでの調査結果には v8 の名前がでてきていない。
v8 は Chromium とは別プロジェクト、別リポジトリで開発されているため、Chromiumのリポジトリには含まれていないのだ
v8のリポジトリとハッシュ値は src 直下のDEPSファイルで確認できる
$ cd ~/work/chromium/src/
$ git show 89.0.4388.4:DEPS | grep v8
'v8_revision': '8b42c4e7175e5d28c57d72dade99c52a144bec1f',
'version': 'y8fIfH8Leo2cPm7iGCYnBxZpwOlgLv8rm2mlcmJlvGsC',
'src/v8':
Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'),
'v8',
'--bucket', 'v8-wasm-fuzzer',
'-s', 'src/v8/test/fuzzer/wasm_corpus.tar.gz.sha1',
$ git show 89.0.4388.4:DEPS | grep chromium_git | grep https
'chromium_git': 'https://chromium.googlesource.com',
上記から Chromium 89.0.4388.4 が利用している v8 リポジトリとリビジョンがわかる
v8のリポジトリをクローンしてLOCを調査する
$ cd ~/work/
$ git clone https://chromium.googlesource.com/v8/v8.git
Cloning into 'v8'...
remote: Sending approximately 751.83 MiB ...
remote: Counting objects: 7660, done
remote: Total 811720 (delta 655777), reused 811720 (delta 655777)
Receiving objects: 100% (811720/811720), 751.83 MiB | 17.33 MiB/s, done.
Resolving deltas: 100% (655777/655777), done.
Checking out files: 100% (12719/12719), done.
$ cd v8/
raiko@raikovm:~/work/v8$ ls
AUTHORS COMMON_OWNERS ENG_REVIEW_OWNERS INTL_OWNERS MIPS_OWNERS S390_OWNERS third_party
BUILD.gn custom_deps gni LICENSE OWNERS samples tools
build_overrides DEPS include LICENSE.fdlibm PPC_OWNERS src WATCHLISTS
CODE_OF_CONDUCT.md DIR_METADATA infra LICENSE.strongtalk PRESUBMIT.py test
codereview.settings docs INFRA_OWNERS LICENSE.v8 README.md testing
$ git checkout 8b42c4e7175e5d28c57d72dade99c52a144bec1f
Checking out files: 100% (134/134), done.
Note: checking out '8b42c4e7175e5d28c57d72dade99c52a144bec1f'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 8b42c4e717 Version 8.9.270
$ git status
HEAD detached at 8b42c4e717
nothing to commit, working tree clean
$ cd ..
$ time ~/work/cloc-1.88/cloc --quiet --timeout=60 v8
github.com/AlDanial/cloc v 1.88 T=19.90 s (542.6 files/s, 136592.3 lines/s)
---------------------------------------------------------------------------------------
Language files blank comment code
---------------------------------------------------------------------------------------
C++ 1533 137484 93595 1227034
JavaScript 7520 76782 110335 634044
C/C++ Header 1326 55731 52482 254340
Python 216 7062 6997 29864
JSON 41 3 0 12634
TypeScript 26 642 261 5396
HTML 28 430 108 4451
C 14 411 200 2051
Bourne Shell 35 323 487 1400
CSS 5 246 5 1212
Markdown 25 405 0 1194
Scheme 1 13 51 222
vim script 3 28 30 143
WebAssembly 12 15 0 105
R 1 12 22 79
Assembly 3 11 59 55
YAML 4 4 19 51
XML 1 8 16 44
DOS Batch 2 4 3 29
make 1 4 27 15
Windows Module Definition 1 0 0 5
Bourne Again Shell 1 2 3 3
---------------------------------------------------------------------------------------
SUM: 10799 279620 264700 2174371
---------------------------------------------------------------------------------------
real 0m20.109s
user 0m12.909s
sys 0m6.805s
C, C++, Assembly だけに絞ると約148万LOC
blink が v8 よりも若干規模が大きい状況だと確認できる
Component | LOC(C/C++/Assembly/Java) |
---|---|
blink | 1,760,045 |
v8 | 1,483,480 |
DEPS から Chromium リポジトリとは別に管理されているライブラリを確認する
v8 と同じように Chromium リポジトリとは別に管理されているライブラリが下記のように確認できる
これら全てを Chromium として LOC をカウントし始めると、どのライブラリまでが Chromium の一部だと扱われるべきで、どのライブラリは外部ライブラリとして扱われるべきなのか?という議論になってしまうだろう。
JavaScriptエンジンである v8 は Chromium の一部として扱うほうが Chromiumの規模を確認するには適切に思える。その他のライブラリはどう扱うべきだろうか?
$ grep -e _git DEPS | grep -e https
'android_git': 'https://android.googlesource.com',
'aomedia_git': 'https://aomedia.googlesource.com',
'boringssl_git': 'https://boringssl.googlesource.com',
'chromium_git': 'https://chromium.googlesource.com',
'dawn_git': 'https://dawn.googlesource.com',
'pdfium_git': 'https://pdfium.googlesource.com',
'quiche_git': 'https://quiche.googlesource.com',
'skia_git': 'https://skia.googlesource.com',
'swiftshader_git': 'https://swiftshader.googlesource.com',
'webrtc_git': 'https://webrtc.googlesource.com',
$ grep -e android_git \
-e aomedia_git \
-e boringssl_git \
-e chromium_git \
-e dawn_git \
-e pdfium_git \
-e quiche_git \
-e skia_git \
-e swiftshader_git \
-e webrtc_git DEPS | cat -n
1 'android_git': 'https://android.googlesource.com',
2 'aomedia_git': 'https://aomedia.googlesource.com',
3 'boringssl_git': 'https://boringssl.googlesource.com',
4 'chromium_git': 'https://chromium.googlesource.com',
5 'dawn_git': 'https://dawn.googlesource.com',
6 'pdfium_git': 'https://pdfium.googlesource.com',
7 'quiche_git': 'https://quiche.googlesource.com',
8 'skia_git': 'https://skia.googlesource.com',
9 'swiftshader_git': 'https://swiftshader.googlesource.com',
10 'webrtc_git': 'https://webrtc.googlesource.com',
11 Var('chromium_git') + '/chromium/llvm-project/cfe/tools/clang-format.git@' +
12 Var('chromium_git') +
13 Var('chromium_git') +
14 Var('chromium_git') +
15 Var('chromium_git') + '/media_router.git' + '@' + 'd4389c097c61fa8c5aa5eb7c3ba34ee203dd62e3',
16 'url': Var('chromium_git') + '/chromium/deps/xz.git' + '@' + 'eecaf55632ca72e90eb2641376bce7cdbc7284f7',
17 Var('chromium_git') + '/chromium/canvas_bench.git' + '@' + 'a7b40ea5ae0239517d78845a5fc9b12976bfc732',
18 Var('chromium_git') + '/chromium/frame_rate/content.git' + '@' + 'c10272c88463efeef6bb19c9ec07c42bc8fe22b9',
19 Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
20 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + 'ff524fb646253b0cbc05aa6d0b327b6b3ddd0385',
21 'url': Var('chromium_git') + '/external/github.com/google/EarlGrey.git' + '@' + '891b1b683a7ed73f98f8064672a95ca77060df42',
22 'url': Var('chromium_git') + '/external/github.com/google/eDistantObject.git' + '@' + '91c532d921e1f37f7e0f213c534df16df6061ec1',
23 'url': Var('chromium_git') + '/external/github.com/google/GTXiLib.git' + '@' + '3e09baa61b2c13fe98029d53b1783f4ca9edaabf',
24 'url': Var('chromium_git') + '/external/github.com/facebook/fishhook.git' + '@' + '66315a9c251edfe92f669ae2deeac0d75374c948',
25 'url': Var('chromium_git') + '/external/github.com/swisspol/GCDWebServer.git' + '@' + '43555c66627f6ed44817855a0f6d465f559d30e0',
26 'url': Var('chromium_git') + '/external/github.com/material-components/material-components-ios.git' + '@' + '6cf2fb727b73cf7ac8ef0722b4de8afdfd1bdf9d',
27 'url': Var('chromium_git') + '/external/github.com/material-foundation/material-font-disk-loader-ios.git' + '@' + '93acc021e3034898716028822cb802a3a816be7e',
28 'url': Var('chromium_git') + '/external/github.com/material-foundation/material-internationalization-ios.git' + '@' + 'd8f32464ac97d5551c8db19de916170ae87cfa90',
29 'url': Var('chromium_git') + '/external/github.com/material-foundation/material-roboto-font-loader-ios.git' + '@' + '4aa51e906e5671c71d24e991f1f10d782a58409f',
30 'url': Var('chromium_git') + '/external/github.com/material-foundation/material-sprited-animation-view-ios.git' + '@' + '8af9adaa182044cf2920dfb620b863669e1aeb7c',
31 'url': Var('chromium_git') + '/external/github.com/material-foundation/material-text-accessibility-ios.git' + '@' + '499b45d1895b565096302a209c0c728df03b95d4',
32 'url': Var('chromium_git') + '/external/github.com/material-motion/motion-interchange-objc.git' + '@' + '8e25f1ca599543dc77e4016b588763dcba6cbac8',
33 'url': Var('chromium_git') + '/external/github.com/material-motion/motion-animator-objc.git' + '@' + '0581bc3dfacd34e40381e9cf45a15070b3868ba7',
34 'url': Var('chromium_git') + '/external/github.com/material-motion/motion-transitioning-objc.git' + '@' + '5bb0d577dd78472536480496ace115bc593ed0e1',
35 'url': Var('chromium_git') + '/external/github.com/hamcrest/OCHamcrest.git' + '@' + '92d9c14d13bb864255e65c09383564653896916b',
36 'url': Var('chromium_git') + '/external/github.com/WebKit/webkit.git' +
37 Var('chromium_git') + '/chromium/cdm.git' + '@' + 'fc5afac6847dc61addc1177103aa602e71a9ecac',
38 'url': Var('chromium_git') + '/native_client/src/native_client.git' + '@' + Var('nacl_revision'),
39 Var('quiche_git') + '/quiche.git' + '@' + Var('quiche_revision'),
40 Var('chromium_git') + '/external/github.com/google/shaderc.git@' +
41 'url': Var('android_git') + '/platform/external/protobuf.git' + '@' + '7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f',
42 'url': Var('chromium_git') + '/android_ndk.git' + '@' + '27c0a8d090c666a50e40fceb4ee5b40b1a2d3f87',
43 'url': Var('chromium_git') + '/external/gob/android/platform/frameworks/support/browser.git' + '@' + '65086eb5e52c16778fa7b4f157156d17b176fcb3',
44 Var('chromium_git') + '/angle/angle.git' + '@' + Var('angle_revision'),
45 Var('chromium_git') + '/external/github.com/videolan/dav1d.git' + '@' + '441e643915bea71a0234d85121109d2816f18984',
46 Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'),
47 Var('dawn_git') + '/tint.git' + '@' + Var('tint_revision'),
48 Var('chromium_git') + '/external/github.com/glfw/glfw.git@' + '2de2589f910b1a85905f425be4d32f33cec092df',
49 'url': Var('chromium_git') + '/external/apache-portable-runtime.git' + '@' + 'c3f11fcd86b42922834cae91103cf068246c6bb6',
50 'url': Var('chromium_git') + '/external/github.com/google/benchmark.git' + '@' + 'ffe1342eb2faa7d2e7c35b4db2ccf99fab81ec20',
51 Var('boringssl_git') + '/boringssl.git' + '@' + Var('boringssl_revision'),
52 Var('chromium_git') + '/breakpad/breakpad.git' + '@' + 'e3d485f73f5836fdd6fb287ab96973c4f63175e1',
53 Var('chromium_git') + '/catapult.git' + '@' + Var('catapult_revision'),
54 Var('chromium_git') + '/external/github.com/google/compact_enc_det.git' + '@' + 'ba412eaaacd3186085babcd901679a48863c7dd5',
55 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'd46475f87758f99f2eb030682f32b69957d152c8',
56 Var('chromium_git') + '/external/github.com/google/cld_3.git' + '@' + '06f695f1c8ee530104416aab5dcf2d6a1414a56a',
57 Var('chromium_git') + '/external/colorama.git' + '@' + '799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
58 Var('chromium_git') + '/external/github.com/google/crc32c.git' + '@' + '5998f8451548244de8cde7fab387a550e7c4497d',
59 'url': Var('chromium_git') + '/chromiumos/platform2/system_api.git' + '@' + '42f3f3cea40612784b38532b9e5d1a54a3d2174c',
60 Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '9b5dd7ab8a98140a1b73b9dea29245605137cd09',
61 Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
62 Var('chromium_git') + '/chromium/dom-distiller/dist.git' + '@' + 'f339eb9463714c3d31657c8ee1bd53d1c7e5c555',
63 Var('chromium_git') + '/external/gitlab.com/libeigen/eigen.git' + '@' + '2ce2f5198929caab4b41a6ad1b9c93f67d8b9a69',
64 'url': Var('chromium_git') + '/external/github.com/googlefonts/emoji-metadata' + '@' + '9d8e5cfe52ee763b7dd91e33e5a50250efbf7135',
65 Var('chromium_git') + '/external/github.com/google/farmhash.git' + '@' + '816a4ae622e964763ca0862d9dbd19324a1eaf45',
66 Var('chromium_git') + '/chromium/third_party/ffmpeg.git' + '@' + '841aa72c9e153ae5f952e31e4b6406870555922d',
67 Var('chromium_git') + '/chromium/deps/flac.git' + '@' + 'af862024c8c8fa0ae07ced05e89013d881b00596',
68 Var('chromium_git') + '/external/github.com/google/flatbuffers.git' + '@' + '6df40a2471737b27271bdd9b900ab5f3aec746c7',
69 'url': Var('chromium_git') + '/external/fontconfig.git' + '@' + '452be8125f0e2a18a7dfef469e05d19374d36307',
70 Var('chromium_git') + '/external/github.com/Maratyszcza/FP16.git' + '@' + 'febbb1c163726b5db24bed55cc9dc42529068997',
71 Var('chromium_git') + '/external/github.com/google/gemmlowp.git' + '@' + 'fda83bdc38b118cc6b56753bd540caa49e570745',
72 'url': Var('chromium_git') + '/external/github.com/grpc/grpc.git' + '@' + '4ac9c6f755463a2321f84b0cb2d631e1828faedb',
73 Var('chromium_git') + '/chromium/src/third_party/freetype2.git' + '@' + Var('freetype_revision'),
74 Var('chromium_git') + '/external/github.com/freetype/freetype2-testing.git' + '@' + Var('freetype_testing_revision'),
75 Var('chromium_git') + '/external/github.com/harfbuzz/harfbuzz.git' + '@' + Var('harfbuzz_revision'),
76 Var('chromium_git') + '/external/github.com/google/emoji-segmenter.git' + '@' + Var('emoji_segmenter_revision'),
77 Var('chromium_git') + '/codecs/libgav1.git' + '@' + 'a5ee0e00923c355ef3aad2b2829365a9fde84430',
78 'url': Var('chromium_git') + '/external/github.com/google/google-toolbox-for-mac.git' + '@' + Var('google_toolbox_for_mac_revision'),
79 Var('chromium_git') + '/external/github.com/google/googletest.git' + '@' + Var('googletest_revision'),
80 'url': Var('chromium_git') + '/native_client/deps/third_party/gnu_binutils.git' + '@' + 'f4003433b61b25666565690caf3d7a7a1a4ec436',
81 'url': Var('chromium_git') + '/chromium/deps/gperf.git' + '@' + 'd892d79f64f9449770443fb06da49b5a1e5d33c1',
82 'url': Var('chromium_git') + '/external/github.com/googlevr/gvr-android-sdk.git' + '@' + '233e7fe922a543e0bc55382d64cacd047307d0e7',
83 'url': Var('chromium_git') + '/external/github.com/google-ar/arcore-android-sdk.git' + '@' + '54861e38cceb406021fc8ece495f82387376af62',
84 Var('chromium_git') + '/chromium/deps/hunspell_dictionaries.git' + '@' + '18e09b9197a3b1d771c077c530d1a4ebad04c167',
85 Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '899e18383fd732b47e6978db2b960a1b2a80179b',
86 'url': Var('chromium_git') + '/external/github.com/c2nes/javalang.git' + '@' + 'f98ffcb31d1daa57fbe5bd6def8ad7c3126d8242',
87 Var('chromium_git') + '/external/github.com/open-source-parsers/jsoncpp.git'
88 'url': Var('chromium_git') + '/external/junit.git' + '@' + '64155f8a9babcfcf4263cf4d08253a1556e75481',
89 Var('chromium_git') + '/external/leveldb.git' + '@' + 'c46e79c760125f9adb87a575d94034032637f8d0',
90 Var('chromium_git') + '/chromium/llvm-project/compiler-rt/lib/fuzzer.git' + '@' + Var('libfuzzer_revision'),
91 Var('chromium_git') + '/external/libaddressinput.git' + '@' + '390dfc08e3806a2125d08d4d8d034a24d587d77a',
92 Var('aomedia_git') + '/aom.git' + '@' + '43927e4611e7c3062a67ebaca38a625faa9a39d6',
93 Var('chromium_git') + '/external/github.com/AOMediaCodec/libavif.git' + '@' + Var('libavif_revision'),
94 Var('chromium_git') + '/external/github.com/google/nearby-connections.git' + '@' + Var('nearby_revision'),
95 Var('chromium_git') + '/external/github.com/google/securemessage.git' + '@' + Var('securemessage_revision'),
96 Var('chromium_git') + '/external/github.com/google/ukey2.git' + '@' + Var('ukey2_revision'),
97 'url': Var('chromium_git') + '/chromiumos/third_party/libdrm.git' + '@' + '0190f49a139e7069d7cad6a6890832831da1aa8b',
98 Var('chromium_git') + '/external/github.com/libexpat/libexpat.git' + '@' + Var('libexpat_revision'),
99 'url': Var('chromium_git') + '/chromiumos/platform2/libipp.git' + '@' + '6c45a4f3a05cb5dd700414fe4d94cf685159d3ce',
100 Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + '518d81558c797486e125e37cb529d65b560a6ea0',
101 'url': Var('chromium_git') + '/external/liblouis-github.git' + '@' + '03d7d72d983d47c17f7de95bbeae89fe33e41943',
102 Var('chromium_git') + '/external/libphonenumber.git' + '@' + '68eba9d6ee8b11fb58ece36b6c46d07965d7f7ff',
103 Var('chromium_git') + '/external/github.com/google/libprotobuf-mutator.git' + '@' + Var('libprotobuf-mutator'),
104 Var('chromium_git') + '/chromium/deps/libsrtp.git' + '@' + '7990ca64c616b150a9cb4714601c4a3b0c84fe91',
105 'url': Var('chromium_git') + '/aosp/platform/system/core/libsync.git' + '@' + 'f4f4387b6bf2387efbcfd1453af4892e8982faf6',
106 'url': Var('chromium_git') + '/chromium/src/third_party/libunwindstack.git' + '@' + '11659d420a71e7323b379ea8781f07c6f384bc7e',
107 Var('chromium_git') + '/webm/libvpx.git' + '@' + 'b5d77a48d740e211a130c8e45d9353ef8c154a47',
108 Var('chromium_git') + '/webm/libwebm.git' + '@' + '51ca718c3adf0ddedacd7df25fe45f67dc5a9ce1',
109 Var('chromium_git') + '/libyuv/libyuv.git' + '@' + '93b1b332cd60b56ab90aea14182755e379c28a80', # from r1770
110 'url': Var('chromium_git') + '/chromium/deps/lighttpd.git' + '@' + Var('lighttpd_revision'),
111 'url': Var('chromium_git') + '/linux-syscall-support.git' + '@' + Var('lss_revision'),
112 'url': Var('chromium_git') + '/external/github.com/google/material-design-icons.git' + '@' +
113 'url': Var('chromium_git') + '/native_client/deps/third_party/mingw-w64/mingw/bin.git' + '@' + '3cc8b140b883a9fe4986d12cfd46c16a093d3527',
114 'url': Var('chromium_git') + '/chromiumos/platform/minigbm.git' + '@' + 'bc4f023bfcc51cf9dcfcfec5bf4177b2e607dd68',
115 'url': Var('chromium_git') + '/external/github.com/nmoinvaz/minizip' + '@' + '1ff40343b55e738d941abb51c70eddb803db16e2',
116 'url': Var('chromium_git') + '/external/mockito/mockito.git' + '@' + '04a2a289a4222f80ad20717c25144981210d2eac',
117 'url': Var('chromium_git') + '/chromium/deps/nacl_sdk_binaries.git' + '@' + '759dfca03bdc774da7ecbf974f6e2b84f43699a5',
118 'url': Var('chromium_git') + '/chromium/deps/nasm.git' + '@' +
119 Var('chromium_git') + '/external/github.com/intel/ARM_NEON_2_x86_SSE.git' + '@' + '42b2bebacee25452e150095ef4480b3fa26e30f5',
120 'url': Var('chromium_git') + '/external/netty-tcnative.git' + '@' + '5b46a8ef4a39c39c576fcdaaf718b585d75df463',
121 'url': Var('chromium_git') + '/external/netty4.git' + '@' + 'cc4420b13bb4eeea5b1cf4f93b2755644cd3b120',
122 Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '3dd5b80bc4f172dd82925bb259cb7c82348409c5',
123 Var('chromium_git') + '/openscreen' + '@' + '6051838253185d8478f5fa4d70c96ef6c0241f94',
124 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '97cfe495bb7a3853266b646d1c79e169387f9c7a',
125 Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'),
126 'url': Var('chromium_git') + '/external/pefile.git' + '@' + '72c6ae42396cb913bcab63c15585dc3b5c3f92f1',
127 Var('android_git') + '/platform/external/perfetto.git' + '@' + '704a1aa4c802df97a8203e052b77db2eabdb317a',
128 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
129 'url': Var('chromium_git') + '/chromiumos/third_party/pyelftools.git' + '@' + '19b3e610c86fcadb837d252c794cb5e8008826ae',
130 Var('chromium_git') + '/external/github.com/google/quic-trace.git' + '@' + '2dccbe8e996d43c6d93b69e4f6d024f015e8c488',
131 Var('chromium_git') + '/external/github.com/GoogleChromeLabs/pywebsocket3.git' + '@' + 'faf478a0453ceae78f2a3bc11c6c21e13362628f',
132 Var('chromium_git') + '/external/github.com/google/re2.git' + '@' + 'c33d1680c7e9ab7edea02d7465a8db13e80b558d',
133 'url': Var('chromium_git') + '/external/github.com/kennethreitz/requests.git' + '@' + 'c7e0fc087ceeadb8b4c84a0953a422c474093d6d',
134 Var('chromium_git') + '/external/github.com/google/ruy.git' + '@' + '34ea9f4993955fa1ff4eb58e504421806b7f2e8f',
135 Var('skia_git') + '/skia.git' + '@' + Var('skia_revision'),
136 Var('chromium_git') + '/external/smhasher.git' + '@' + 'e87738e57558e0ec472b2fc3a643b838e5b6e88f',
137 Var('chromium_git') + '/external/github.com/google/snappy.git' + '@' + 'ea368c2f07de5f31146a10214f27d15091b09771',
138 Var('chromium_git') + '/chromium/deps/sqlite.git' + '@' + '702a79c7d77331cbe2838c4b3c5fab529f75f7c2',
139 Var('swiftshader_git') + '/SwiftShader.git' + '@' + Var('swiftshader_revision'),
140 'url': Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + '90a76f78e73579ab6bc4f300953cec39b27d058b',
141 Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'fcc4b966f1265f466e82617020af93670141b009',
142 'url': Var('chromium_git') + '/external/github.com/google/turbine.git' + '@' + '3c31e67ae25b5e43713fd868e3a9b535ff6298af',
143 'url': Var('chromium_git') + '/chromium/third_party/ub-uiautomator.git' + '@' + '00270549ce3161ae72ceb24712618ea28b4f9434',
144 Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + 'a3c3ef666b7a5e4c93ebae5a7462add6f86f5cf2',
145 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@e59ae1af7571c2994183768c2a36fff8b1854437',
146 Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '6c656df63da5995a932aafd45b32af1974e497d9',
147 'url': Var('chromium_git') + '/external/anongit.freedesktop.org/git/wayland/wayland.git' + '@' + 'eb1339edd398b9f5328816931e585db4229aa132',
148 'url': Var('chromium_git') + '/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git' + '@' + '684cd23ae31fafb9eda2a0cd15edb4e96de92259',
149 'url': Var('chromium_git') + '/external/github.com/01org/wds' + '@' + 'a488b169d724d6b4cfcd7037dbab1f1c2bf04f3b',
150 Var('chromium_git') + '/external/github.com/SeleniumHQ/selenium/py.git' + '@' + 'd0045ec570c1a77612db35d1e92f05e1d27b4d53',
151 Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '3e3f152617996e4a175fd0b597a1936824b371f3',
152 Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d',
153 Var('webrtc_git') + '/src.git' + '@' + '1c5e63e5451374783aaf0259f5c23d3688a5b2ff',
154 Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'),
155 Var('skia_git') + '/external/github.com/google/wuffs.git' + '@' + Var('wuffs_revision'),
156 'url': Var('chromium_git') + '/external/anongit.freedesktop.org/git/wayland/weston.git' + '@' + 'db905f467169f9f131c5ddc6038296f866d5daeb',
157 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
158 Var('chromium_git') + '/chromium/deps/acid3.git' + '@' + '6be0a66a1ebd7ebc5abc1b2f405a945f6d871521',
159 Var('chromium_git') + '/infra/luci/client-py.git' + '@' + Var('swarming_revision'),
160 Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'),
161 'url': Var('android_git') + '/platform/prebuilts/build-tools.git' + '@' + '5794e96eb8bae47bb48feee915d99583573b3887',