gclient: throw errors if values from deps_os override deps

With 'flatten' work and in general, we assume deps_os only add to deps,
without attempting to override entries there.

This removes significant edge cases from flatten code,
and ensures DEPS are easier to reason about.

This reverses some past patches and decisions:

a0ad8ad9c9e72291caa387d4ad1d556da3aa860f
https://codereview.chromium.org/11368067
https://bugs.chromium.org/p/chromium/issues/detail?id=157979

ed2b4fe59bb58986a4228606f3fa06dd16883514
https://codereview.chromium.org/23875029
https://bugs.chromium.org/p/chromium/issues/detail?id=248168

These are rather old though (2012-2013), and not expected to be used.

Bug: 570091
Change-Id: I143e95bdaef9d10c937a5f678e6be7e26899ad4d
Reviewed-on: https://chromium-review.googlesource.com/531029
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
Commit-Queue: Paweł Hajdan Jr. <phajdan.jr@chromium.org>
2 files changed
tree: 2a50e044ab794a00eade41a8c5de934dd707bdaa
  1. bootstrap/
  2. fetch_configs/
  3. git-templates/
  4. infra/
  5. man/
  6. recipes/
  7. support/
  8. testing_support/
  9. tests/
  10. third_party/
  11. win_toolchain/
  12. zsh-goodies/
  13. .gitattributes
  14. .gitignore
  15. .style.yapf
  16. annotated_gclient.py
  17. appengine_mapper.py
  18. apply_issue
  19. apply_issue.bat
  20. apply_issue.py
  21. auth.py
  22. autoninja
  23. autoninja.bat
  24. autoninja.py
  25. breakpad.py
  26. buildbucket.py
  27. checkout.py
  28. cipd
  29. cipd.bat
  30. cipd.ps1
  31. cipd_bin_setup.bat
  32. cipd_bin_setup.sh
  33. cipd_client_version
  34. cipd_manifest.txt
  35. cit
  36. cit.bat
  37. cit.py
  38. clang-format
  39. clang-format.bat
  40. clang_format.py
  41. clang_format_merge_driver
  42. clang_format_merge_driver.bat
  43. clang_format_merge_driver.py
  44. codereview.settings
  45. commit_queue
  46. commit_queue.bat
  47. commit_queue.py
  48. cpplint.bat
  49. cpplint.py
  50. cpplint_chromium.py
  51. create-ntfs-junction.c
  52. create-ntfs-junction.exe
  53. dart_format.py
  54. depot-tools-auth
  55. depot-tools-auth.bat
  56. depot-tools-auth.py
  57. download_from_google_storage
  58. download_from_google_storage.bat
  59. download_from_google_storage.py
  60. fetch
  61. fetch.bat
  62. fetch.py
  63. fix_encoding.py
  64. gclient
  65. gclient-new-workdir.py
  66. gclient.bat
  67. gclient.py
  68. gclient_completion.sh
  69. gclient_eval.py
  70. gclient_scm.py
  71. gclient_utils.py
  72. gerrit_client.py
  73. gerrit_util.py
  74. git-cache
  75. git-cherry-pick-upload
  76. git-cl
  77. git-crrev-parse
  78. git-crsync
  79. git-drover
  80. git-find-releases
  81. git-footers
  82. git-freeze
  83. git-gs
  84. git-hyper-blame
  85. git-map
  86. git-map-branches
  87. git-mark-merge-base
  88. git-nav-downstream
  89. git-nav-upstream
  90. git-new-branch
  91. git-number
  92. git-rebase-update
  93. git-rename-branch
  94. git-reparent-branch
  95. git-retry
  96. git-runhooks
  97. git-squash-branch
  98. git-thaw
  99. git-upstream-diff
  100. git_cache.py
  101. git_cherry_pick_upload.py
  102. git_cl.py
  103. git_cl_completion.sh
  104. git_common.py
  105. git_dates.py
  106. git_drover.py
  107. git_find_releases.py
  108. git_footers.py
  109. git_freezer.py
  110. git_hyper_blame.py
  111. git_map.py
  112. git_map_branches.py
  113. git_mark_merge_base.py
  114. git_nav_downstream.py
  115. git_new_branch.py
  116. git_number.py
  117. git_rebase_update.py
  118. git_rename_branch.py
  119. git_reparent_branch.py
  120. git_retry.py
  121. git_squash_branch.py
  122. git_upstream_diff.py
  123. gn
  124. gn.bat
  125. gn.py
  126. gsutil.py
  127. led
  128. led.bat
  129. LICENSE
  130. my_activity.py
  131. my_reviews.py
  132. ninja
  133. ninja-linux32
  134. ninja-linux64
  135. ninja-mac
  136. ninja.exe
  137. OWNERS
  138. owners.py
  139. owners_finder.py
  140. patch.py
  141. PRESUBMIT.py
  142. presubmit_canned_checks.py
  143. presubmit_support.py
  144. profile.xml
  145. pylint
  146. pylint.py
  147. pylintrc
  148. python_runner.sh
  149. README.gclient.md
  150. README.git-cl.md
  151. README.md
  152. README.testing
  153. repo
  154. rietveld.py
  155. roll-dep
  156. roll-dep-svn
  157. roll-dep-svn.bat
  158. roll-dep.bat
  159. roll_dep.py
  160. roll_dep_svn.py
  161. scm.py
  162. setup_color.py
  163. split_cl.py
  164. subcommand.py
  165. subprocess2.py
  166. update_depot_tools
  167. update_depot_tools.bat
  168. update_depot_tools_toggle.py
  169. upload_to_google_storage.py
  170. vpython
  171. vpython.bat
  172. WATCHLISTS
  173. watchlists.py
  174. weekly
  175. wtf
README.md

depot_tools

Tools for working with Chromium development. It requires python 2.7.

Tools

The most important tools are:

  • fetch: A gclient wrapper to checkout a project. Use fetch --help for more details.
  • gclient: A meta-checkout tool. Think repo or git submodules, except that it support OS-specific rules, e.g. do not checkout Windows only dependencies when checking out for Android. Use gclient help for more details and README.gclient.md.
  • git cl: A code review tool to interact with Rietveld or Gerrit. Use git cl help for more details and README.git-cl.md.
  • roll-dep: A gclient dependency management tool to submit a dep roll, updating a dependency to a newer revision.

There are a lot of git utilities included.

Updating

depot_tools updates itself automatically when running gclient tool. To disable auto update, set the environment variable DEPOT_TOOLS_UPDATE=0.

To update package manually, run update_depot_tools.bat on Windows, or ./update_depot_tools on Linux or Mac.

On Windows only, running gclient will install git and python.

Contributing

To contribute change for review:

git new-branch <somename>
# Hack
git add .
git commit -a -m "Fixes goat teleporting"
# find reviewers
git cl owners
git log -- <yourfiles>

# Request a review.
git cl upload -r reviewer1@chromium.org,reviewer2@chromium.org --send-mail

# Edit change description if needed.
git cl desc

# If change is approved, flag it to be committed.
git cl set-commit

# If change needs more work.
git rebase-update
...
git cl upload -t "Fixes goat teleporter destination to be Australia"

See also open bugs, open reviews, forum or report problems.

cpplint.py

To update cpplint.py, please submit the change upstream first at https://github.com/google/styleguide/tree/gh-pages/cpplint then copy it down.