chromiumのソース一式を持ってくるツール。depot_tools/fetch_configsにデフォルトの設定がある。gclientgitを使ってchiromiumと依存ソースをゲットする。

depot_tools/fetch_configs配下にあるpyファイルの拡張を除いた部分がfetchの引数として指定できる。以下のようなものがある。

android.py
breakpad.py
chromium.py
config_util.py
crashpad.py
dart.py
depot_tools.py
goma_client.py
gyp.py
infra.py
infra_internal.py
ios.py
ios_internal.py
nacl.py
naclports.py
pdfium.py
skia.py
skia_buildbot.py
syzygy.py
v8.py
webrtc.py
webrtc_android.py
webrtc_ios.py

これらのスクリプトはfetch引数をとって実行すると内部で定義される辞書をjsonとして返す。例えばcrashpad.py fetchは以下を返す。(整形済み)

{  
   "type":"gclient_git",
   "gclient_git_spec":{  
      "solutions":[  
         {  
            "url":"https://chromium.googlesource.com/crashpad/crashpad.git",
            "managed":false,
            "name":"crashpad"
         }
      ]
   }
}

このurlをgit cloneして持ってくる。持ってきたファイルの中にDEPSがあり、このファイルの中に依存しているプロジェクトが記述されているので、それも持ってくる。今回の場合DEPSの内容は以下のようになる。

# Copyright 2014 The Crashpad Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

vars = {
  'chromium_git': 'https://chromium.googlesource.com',
  'pull_linux_clang': False
}

deps = {
  'buildtools':
      Var('chromium_git') + '/chromium/buildtools.git@' +
      '6fe4a3251488f7af86d64fc25cf442e817cf6133',
  'crashpad/third_party/gtest/gtest':
      Var('chromium_git') + '/external/github.com/google/googletest@' +
      'c091b0469ab4c04ee9411ef770f32360945f4c53',
  'crashpad/third_party/gyp/gyp':
      Var('chromium_git') + '/external/gyp@' +
      '5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f',
  'crashpad/third_party/mini_chromium/mini_chromium':
      Var('chromium_git') + '/chromium/mini_chromium@' +
      'd5523a7033c013dd2ae73fa29428f7b70dc0b3a0',
  'crashpad/third_party/libfuzzer/src':
      Var('chromium_git') + '/chromium/llvm-project/compiler-rt/lib/fuzzer.git@' +
      'fda403cf93ecb8792cb1d061564d89a6553ca020',
  'crashpad/third_party/zlib/zlib':
      Var('chromium_git') + '/chromium/src/third_party/zlib@' +
      '13dc246a58e4b72104d35f9b1809af95221ebda7',
}

hooks = [
  {
    'name': 'clang_format_mac',
    'pattern': '.',
    'condition': 'host_os == "mac"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-clang-format',
      '--sha1_file',
      'buildtools/mac/clang-format.sha1',
    ],
  },
  {
    'name': 'clang_format_linux',
    'pattern': '.',
    'condition': 'host_os == "linux"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-clang-format',
      '--sha1_file',
      'buildtools/linux64/clang-format.sha1',
    ],
  },
  {
    'name': 'clang_format_win',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-clang-format',
      '--sha1_file',
      'buildtools/win/clang-format.exe.sha1',
    ],
  },
  {
    'name': 'gn_mac',
    'pattern': '.',
    'condition': 'host_os == "mac"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-gn',
      '--sha1_file',
      'buildtools/mac/gn.sha1',
    ],
  },
  {
    'name': 'gn_linux',
    'pattern': '.',
    'condition': 'host_os == "linux"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-gn',
      '--sha1_file',
      'buildtools/linux64/gn.sha1',
    ],
  },
  {
    'name': 'gn_win',
    'pattern': '.',
    'condition': 'host_os == "win"',
    'action': [
      'download_from_google_storage',
      '--no_resume',
      '--no_auth',
      '--bucket=chromium-gn',
      '--sha1_file',
      'buildtools/win/gn.exe.sha1',
    ],
  },
  {
    # This uses “cipd install” so that mac-amd64 and linux-amd64 can coexist
    # peacefully. “cipd ensure” would remove the macOS package when running on a
    # Linux build host and vice-versa. https://crbug.com/789364. This package is
    # only updated when the solution in .gclient includes an entry like:
    #   "custom_vars": { "pull_linux_clang": True }
    # The ref used is "goma". This is like "latest", but is considered a more
    # stable latest by the Fuchsia toolchain team.
    'name': 'clang_linux',
    'pattern': '.',
    'condition': 'checkout_linux and pull_linux_clang',
    'action': [
      'cipd',
      'install',
      # sic, using Fuchsia team's generic build of clang for linux-amd64 to
      # build for linux-amd64 target too.
      'fuchsia/clang/linux-amd64',
      'goma',
      '-root', 'crashpad/third_party/linux/clang/linux-amd64',
      '-log-level', 'info',
    ],
  },
  {
    # If using a local clang ("pull_linux_clang" above), also pull down a
    # sysroot.
    'name': 'sysroot_linux',
    'pattern': '.',
    'condition': 'checkout_linux and pull_linux_clang',
    'action': [
      'crashpad/build/install_linux_sysroot.py',
    ],
  },
  {
    # Same rationale for using "install" rather than "ensure" as for first clang
    # package. https://crbug.com/789364.
    # Same rationale for using "goma" instead of "latest" as clang_linux above.
    'name': 'fuchsia_clang_mac',
    'pattern': '.',
    'condition': 'checkout_fuchsia and host_os == "mac"',
    'action': [
      'cipd',
      'install',
      'fuchsia/clang/mac-amd64',
      'goma',
      '-root', 'crashpad/third_party/fuchsia/clang/mac-amd64',
      '-log-level', 'info',
    ],
  },
  {
    # Same rationale for using "install" rather than "ensure" as for first clang
    # package. https://crbug.com/789364.
    # Same rationale for using "goma" instead of "latest" as clang_linux above.
    'name': 'fuchsia_clang_linux',
    'pattern': '.',
    'condition': 'checkout_fuchsia and host_os == "linux"',
    'action': [
      'cipd',
      'install',
      'fuchsia/clang/linux-amd64',
      'goma',
      '-root', 'crashpad/third_party/fuchsia/clang/linux-amd64',
      '-log-level', 'info',
    ],
  },
  {
    # Same rationale for using "install" rather than "ensure" as for clang
    # packages. https://crbug.com/789364.
    'name': 'fuchsia_qemu_mac',
    'pattern': '.',
    'condition': 'checkout_fuchsia and host_os == "mac"',
    'action': [
      'cipd',
      'install',
      'fuchsia/qemu/mac-amd64',
      'latest',
      '-root', 'crashpad/third_party/fuchsia/qemu/mac-amd64',
      '-log-level', 'info',
    ],
  },
  {
    # Same rationale for using "install" rather than "ensure" as for clang
    # packages. https://crbug.com/789364.
    'name': 'fuchsia_qemu_linux',
    'pattern': '.',
    'condition': 'checkout_fuchsia and host_os == "linux"',
    'action': [
      'cipd',
      'install',
      'fuchsia/qemu/linux-amd64',
      'latest',
      '-root', 'crashpad/third_party/fuchsia/qemu/linux-amd64',
      '-log-level', 'info',
    ],
  },
  {
    # The SDK is keyed to the host system because it contains build tools.
    # Currently, linux-amd64 is the only SDK published (see
    # https://chrome-infra-packages.appspot.com/#/?path=fuchsia/sdk). As long as
    # this is the case, use that SDK package even on other build hosts. The
    # sysroot (containing headers and libraries) and other components are
    # related to the target and should be functional with an appropriate
    # toolchain that runs on the build host (fuchsia_clang, above).
    'name': 'fuchsia_sdk',
    'pattern': '.',
    'condition': 'checkout_fuchsia',
    'action': [
      'cipd',
      'install',
      'fuchsia/sdk/linux-amd64',
      'latest',
      '-root', 'crashpad/third_party/fuchsia/sdk/linux-amd64',
      '-log-level', 'info',
    ],
  },
  {
    'name': 'gyp',
    'pattern': '\.gypi?$',
    'action': ['python', 'crashpad/build/gyp_crashpad.py'],
  },
]

recursedeps = [
  'buildtools',
]
Page last modified on July 04, 2018, at 06:18 PM
Powered by PmWiki