Roll buildtools/ 0ac67b7ce..4e0e9c73a (100 commits)

https://chromium.googlesource.com/chromium/src/buildtools/+log/0ac67b7cef80..4e0e9c73a0f2

$ git log 0ac67b7ce..4e0e9c73a --date=short --no-merges --format='%ad %ae %s'
2024-05-09 kimstephanie Reland "Migrate clang-format to gcs first class deps"
2024-05-08 rgw Make presubmits for chromium/src/buildtools/checkdeps compatible in cog workspace
2024-05-01 jwata Use infra/config/groups/chrome-build/OWNERS in {build, buildtools}/OWNERS
2024-04-30 tasak Revert "Migrate clang-format to gcs first class deps"
2024-04-29 msavigny Reduce fail_early_min_action_count to 400 from 4000.
2024-04-29 kimstephanie Migrate clang-format to gcs first class deps
2024-04-26 agale Migrate TODOs referencing old crbug IDs to the new issue tracker IDs
2024-04-26 lokeric Add RBE worker labels to chromeOS rewrapper configs
2024-04-25 sshrimp utr: use reclient config files to get instances to use
2024-04-25 kimstephanie Add format/ to buildtools/.gitignore before migrating clang-format
2024-04-22 agale Migrate TODOs referencing old crbug IDs to the new issue tracker IDs
2024-04-11 khalidpeer Revert "Roll libc++ from e3b94d0e5b86 to 852bc6746f45 (46 revisions)"
2024-04-11 thakis Roll libc++ from e3b94d0e5b86 to 852bc6746f45 (46 revisions)
2024-04-10 thakis Roll libc++ from 51e4d21e786a to e3b94d0e5b86 (2 revisions)
2024-04-09 thakis Roll libc++ from 6ddb5cb9499f to 51e4d21e786a (5 revisions)
2024-03-27 chromium-autoroll Roll libc++ from 0db9bf285099 to 6ddb5cb9499f (1 revision)
2024-03-26 philwo reclient: Set -lifetime 5m for luci-auth
2024-03-26 chromium-autoroll Roll libc++ from 347aa8a73b25 to 0db9bf285099 (3 revisions)
2024-03-26 thakis Roll libc++ from 890351bd2c8e to 347aa8a73b25 (10 revisions)
2024-03-25 thakis Roll libc++ from 0c90b8212cbb to 890351bd2c8 (71 revisions)
2024-03-25 thakis Re-enable _LIBCPP_ABI_VERSION for Fuchsia
2024-03-23 ayzhao Roll libc++ from 80307e66e74b to 0c90b8212cbb (6 revisions)
2024-03-20 ayzhao [libc++] Temporarily define individual ABI flags instead of _LIBCPP_ABI_VERSION for Fuchsia
2024-03-20 msavigny reclient: Use luci-auth credshelper mode for Windows auth
2024-03-13 jwata [build] Add python/rewrapper_linux_large.cfg to buildtools/reclient_cfgs/linux
2024-03-13 jwata [build] Add a dummy rewrapper_linux_large.cfg under //buildtools/reclient_cfgs/linux_chroot/python
2024-03-04 chromium-autoroll Roll libc++ from 9c5c68635c2b to 80307e66e74b (1 revision)
2024-03-04 chromium-autoroll Roll libc++ from b5fe27de9381 to 9c5c68635c2b (14 revisions)
2024-02-28 chromium-autoroll Roll libc++ from aff3a0b23ca5 to b5fe27de9381 (2 revisions)
2024-02-27 chromium-autoroll Roll libc++ from 08b8dfd3a968 to aff3a0b23ca5 (5 revisions)
2024-02-26 chromium-autoroll Roll libc++ from 5a3d13ed4281 to 08b8dfd3a968 (1 revision)
2024-02-23 chromium-autoroll Roll libc++ from 1506720cb3d2 to 5a3d13ed4281 (1 revision)
2024-02-21 chromium-autoroll Roll libc++ from 0285388fda81 to 1506720cb3d2 (1 revision)
2024-02-20 hans Roll libc++ from 834e97d73f13 to 0285388fda81 (4 revisions)
2024-02-20 tikuta buildtools: make configure_reclient_cfgs.py more quiet
2024-02-19 aeubanks Roll clang+rust llvmorg-18-init-17730-gf670112a-5 : llvmorg-19-init-2319-g7c4c2746-1 / cd6d8f2a04528f827ad3d399581c0f3502b15a72-1 : 340bb19fea20fd5f9357bbfac542fad84fc7ea2b-3
2024-02-19 chromium-autoroll Roll libc++ from 6d83791af99e to 834e97d73f13 (1 revision)
2024-02-18 chromium-autoroll Roll libc++ from ac8924b86b9c to 6d83791af99e (3 revisions)
2024-02-17 chromium-autoroll Roll libc++ from 9d119c1f4a09 to ac8924b86b9c (25 revisions)
2024-02-12 banisingh Enable Credentials Helper for Linux
2024-02-08 anastasi Revert "Roll libc++ from 9d119c1f4a09 to c51c9efb6c5a (1 revision)"
2024-02-08 mstensho Change chromium-browser-clang/rewrapper_linux.cfg to racing.
2024-02-08 chromium-autoroll Roll libc++ from 9d119c1f4a09 to c51c9efb6c5a (1 revision)
2024-02-07 ayzhao Revert "Roll clang+rust llvmorg-18-init-17730-gf670112a-1 : llvmorg-19-init-817-g3f5fcb59-1 / cd6d8f2a04528f827ad3d399581c0f3502b15a72-1 : cdaa12e3dff109f72a5a8a0a67ea225052122a79-1"
2024-02-07 ayzhao Roll clang+rust llvmorg-18-init-17730-gf670112a-1 : llvmorg-19-init-817-g3f5fcb59-1 / cd6d8f2a04528f827ad3d399581c0f3502b15a72-1 : cdaa12e3dff109f72a5a8a0a67ea225052122a79-1
2024-02-07 chromium-autoroll Roll libc++ from 6024b2688762 to 9d119c1f4a09 (1 revision)
2024-02-06 thakis Roll libc++ from 3c2f3884e62e to 6024b2688762 (13 revisions)
2024-02-05 hans Use the new flag spelling: -fvisibility-global-new-delete=force-hidden
2024-02-03 chromium-autoroll Roll libc++ from 8ca19451ce24 to 3c2f3884e62e (4 revisions)
2024-02-02 chromium-autoroll Roll libc++ from 030b3ed3a4cb to 8ca19451ce24 (49 revisions)
2024-02-02 chromium-autoroll Roll libc++ from 28aa23ffb4c7 to 030b3ed3a4cb (42 revisions)
2024-02-01 banisingh Use Credshelper for Mac
2024-01-23 ukai Revert^2 "reclient_cfg: check native_client dir is checkout of native_client.git"
2024-01-22 hans Reland "Roll libc++ from 24cb5545a9a6 to 28aa23ffb4c7 (8 revisions)"
2024-01-22 hans Revert "Roll libc++ from 24cb5545a9a6 to 28aa23ffb4c7 (8 revisions)"
2024-01-22 derinel Revert "reclient_cfg: check native_client dir is checkout of native_client.git"
2024-01-22 ukai reclient_cfg: check native_client dir is checkout of native_client.git
2024-01-19 chromium-autoroll Roll libc++ from 24cb5545a9a6 to 28aa23ffb4c7 (8 revisions)
2024-01-18 ayzhao [libc++] Add the <__assertion_handler> header
2024-01-17 chromium-autoroll Roll libc++ from e8bd6ce42bcf to 24cb5545a9a6 (16 revisions)
2024-01-17 jeffyoon [buganizer] Migrate DIR_METADATA for buildtools/
2024-01-16 chromium-autoroll Roll libc++ from 53801f26327b to e8bd6ce42bcf (1 revision)
2024-01-15 chromium-autoroll Roll libc++ from 69115fd1bdb6 to 53801f26327b (1 revision)
2024-01-14 chromium-autoroll Roll libc++ from 8c1e8ec34a0a to 69115fd1bdb6 (3 revisions)
2024-01-13 chromium-autoroll Roll libc++ from d1f035a3ffb7 to 8c1e8ec34a0a (5 revisions)
2024-01-12 thakis Reland "Define _LIBCPP_INSTRUMENTED_WITH_ASAN in libc++'s __config_site"
2024-01-12 chromium-autoroll Roll libc++ from e4aac3ace5ad to d1f035a3ffb7 (5 revisions)
2024-01-10 chromium-autoroll Roll libc++ from f18cfa95e152 to e4aac3ace5ad (10 revisions)
2024-01-09 chromium-autoroll Roll libc++ from 8c2468e9dd28 to f18cfa95e152 (5 revisions)
2024-01-08 chromium-autoroll Roll libc++ from 34685c3c0e34 to 8c2468e9dd28 (4 revisions)
2024-01-07 chromium-autoroll Roll libc++ from 0fbc2a9792a1 to 34685c3c0e34 (1 revision)
2024-01-06 chromium-autoroll Roll libc++ from 15db46be4ec5 to 0fbc2a9792a1 (14 revisions)
2023-12-28 chromium-autoroll Roll libc++ from d0429f0628dd to 15db46be4ec5 (1 revision)
2023-12-25 chromium-autoroll Roll libc++ from 31b01457fa71 to d0429f0628dd (1 revision)
2023-12-24 chromium-autoroll Roll libc++ from e05dc0f04bd5 to 31b01457fa71 (4 revisions)
2023-12-23 thakis Roll libc++ from 9b0e39e84011 to e05dc0f04bd5 (2 revisions)
2023-12-21 luci-bisection Revert "Define _LIBCPP_INSTRUMENTED_WITH_ASAN in libc++'s __config_site"
2023-12-21 chromium-autoroll Roll libc++ from 715a7b8509e7 to 9b0e39e84011 (3 revisions)
2023-12-20 thakis Define _LIBCPP_INSTRUMENTED_WITH_ASAN in libc++'s __config_site
2023-12-19 chromium-autoroll Roll libc++ from d855d8bc2ef4 to 715a7b8509e7 (5 revisions)
2023-12-18 chromium-autoroll Roll libc++ from 28d7125795ff to d855d8bc2ef4 (5 revisions)
2023-12-17 chromium-autoroll Roll libc++ from 6226f31a8c99 to 28d7125795ff (1 revision)
2023-12-16 chromium-autoroll Roll libc++ from 99f5e4d09e30 to 6226f31a8c99 (3 revisions)
2023-12-15 chromium-autoroll Roll libc++ from dbea84767223 to 99f5e4d09e30 (2 revisions)
2023-12-15 philwo build: Add Chrome Build Team members to OWNERS
2023-12-14 chromium-autoroll Roll libc++ from 1f70899ab6d9 to dbea84767223 (9 revisions)
2023-12-13 chromium-autoroll Roll libc++ from a88e6d6daa3e to 1f70899ab6d9 (8 revisions)
2023-12-11 chromium-autoroll Roll libc++ from 16665d119a63 to a88e6d6daa3e (3 revisions)
2023-12-11 jwata [reclient] Add infra/config/subprojects/reclient/OWNERS
2023-12-10 chromium-autoroll Roll libc++ from 88a63fd37939 to 16665d119a63 (5 revisions)
2023-12-09 chromium-autoroll Roll libc++ from d7209903013d to 88a63fd37939 (3 revisions)
2023-12-08 chromium-autoroll Roll libc++ from 4ab8957af327 to d7209903013d (4 revisions)
2023-12-07 chromium-autoroll Roll libc++ from df5952f59cc0 to 4ab8957af327 (6 revisions)
2023-12-07 msavigny Set mac auth to gcloud, not automatic
2023-12-06 msavigny Revert "Set mac auth to gcloud, not automatic"
2023-12-06 msavigny Set mac auth to gcloud, not automatic
2023-12-06 msavigny Add more foundry-x team memers to reclient config OWNERS.
2023-12-06 hans Roll libc++ from 7f2dd14f5de9 to df5952f59cc0 (8 revisions)
2023-12-06 lokeric nacl: Specify lib directory for chromeos reclient builds
2023-12-05 chromium-autoroll Roll libc++ from caccdb0407e8 to 7f2dd14f5de9 (4 revisions)

Created with:
  roll-dep buildtools
R=muyaoxu@google.com

Change-Id: I178c828da44febb043006bc7d618e678747061f3
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/5532303
Commit-Queue: Mark Foltz <mfoltz@chromium.org>
Reviewed-by: Muyao Xu <muyaoxu@google.com>
2 files changed
tree: 95ab408d1f1c1af381d6d84431552b98747f6b50
  1. build_overrides/
  2. cast/
  3. discovery/
  4. docs/
  5. gni/
  6. infra/
  7. osp/
  8. platform/
  9. test/
  10. testing/
  11. third_party/
  12. tools/
  13. util/
  14. .clang-format
  15. .gitignore
  16. .gitmodules
  17. .gn
  18. .vpython3
  19. AUTHORS
  20. BUILD.gn
  21. codereview.settings
  22. COMMITTERS
  23. DEPS
  24. LICENSE
  25. PRESUBMIT.py
  26. PRESUBMIT_test_mocks.py
  27. README.md
README.md

Open Screen Library

The Open Screen Library implements the Open Screen Protocol, Multicast DNS and DNS-SD, and the Chromecast protocols (discovery, application control, and media streaming).

The library consists of feature modules that share a common platform API that must be implemented and linked by the embedding application.

The major feature modules in the library can be used independently and have their own documentation:

Getting the code

Installing depot_tools

Library dependencies are managed using gclient, from the depot_tools repo.

To get gclient, run the following command in your terminal:

    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

Then add the depot_tools folder to your PATH environment variable.

Note that openscreen does not use other features of depot_tools like repo or drover. However, some git-cl functions do work, like git cl try, git cl format, git cl lint, and git cl upload.

Checking out code

From the parent directory of where you want the openscreen checkout (e.g., ~/my_project_dir), configure gclient and check out openscreen with the following commands:

    cd ~/my_project_dir
    gclient config https://chromium.googlesource.com/openscreen
    gclient sync

The first gclient command will create a default .gclient file in ~/my_project_dir that describes how to pull down the openscreen repository. The second command creates an openscreen/ subdirectory, downloads the source code, all third-party dependencies, and the toolchain needed to build things; and at their appropriate revisions.

Syncing your local checkout

To update your local checkout from the openscreen reference repository, just run

   cd ~/my_project_dir/openscreen
   git pull
   gclient sync

This will rebase any local commits on the remote top-of-tree, and update any dependencies that have changed.

Build setup

The following are the main tools are required for development/builds.

  • Installed by gclient automatically
    • Build file generator: gn (installed into buildtools/)
    • Code formatter: clang-format (installed into buildtools/)
    • Builder: ninja
    • Compiler/Linker: clang
  • Installed by you
    • JSON validator: yajsv
    • libstdc++
    • gcc
    • XCode

yajsv installation

  1. Install go from https://golang.org or your Linux package manager.
  2. go install github.com/neilpa/yajsv@latest

libstdc++ (Linux only)

Ensure that libstdc++ 8 is installed, as clang depends on the system instance of it. On Debian flavors, you can run:

   sudo apt-get install libstdc++-8-dev libstdc++6-8-dbg

XCode (Mac only)

You can install the XCode command-line tools only or the full version of XCode.

xcode-select --install

gcc (optional, Linux only)

Setting the gn argument is_clang=false on Linux enables building using gcc instead.

  mkdir out/debug-gcc
  gn gen out/debug-gcc --args="is_clang=false"

Note that g++ version 9 or newer must be installed. On Debian flavors you can run:

  sudo apt-get install gcc-9

Debug build

Setting the gn argument is_debug=true enables debug build.

  gn gen out/debug --args="is_debug=true"

gn configuration

Running gn args opens an editor that allows to create a list of arguments passed to every invocation of gn gen. gn args --list will list all of the possible arguments you can set.

  gn args out/debug

Building targets

We use the Open Screen Protocol demo application as an example, however, the instructions are essentially the same for all executable targets.

  mkdir out/debug
  gn gen out/debug             # Creates the build directory and necessary ninja files
  ninja -C out/debug osp_demo  # Builds the executable with ninja
  ./out/debug/osp_demo         # Runs the executable

The -C argument to ninja works just like it does for GNU Make: it specifies the working directory for the build. So the same could be done as follows:

  ./gn gen out/debug
  cd out/debug
  ninja osp_demo
  ./osp_demo

After editing a file, only ninja needs to be rerun, not gn. If you have edited a BUILD.gn file, ninja will re-run gn for you.

We recommend using autoninja instead of ninja, which takes the same command-line arguments but automatically parallelizes the build for your system, depending on number of processor cores, amount of RAM, etc.

Also, while specifying build targets is possible while using ninja, typically for development it is sufficient to just build everything, especially since the Open Screen repository is still quite small. That makes the invocation to the build system simplify to:

  autoninja -C out/debug

For details on running osp_demo, see its README.md.

Building all targets

Running ninja -C out/debug gn_all will build all non-test targets in the repository.

gn ls --type=executable out/debug will list all of the executable targets that can be built.

If you want to customize the build further, you can run gn args out/debug to pull up an editor for build flags. gn args --list out/debug prints all of the build flags available.

Building and running unit tests

  ninja -C out/debug openscreen_unittests
  ./out/debug/openscreen_unittests

Contributing changes

Open Screen library code should follow the Open Screen Library Style Guide.

This library uses Chromium Gerrit for patch management and code review (for better or worse). You will need to register for an account at chromium-review.googlesource.com to upload patches for review.

The following sections contain some tips about dealing with Gerrit for code reviews, specifically when pushing patches for review, getting patches reviewed, and committing patches.

Uploading a patch for review

The git cl tool handles details of interacting with Gerrit (the Chromium code review tool) and is recommended for pushing patches for review. Once you have committed changes locally, simply run:

  git cl format
  git cl upload

The first command will will auto-format the code changes using clang-format. Then, the second command runs the PRESUBMIT.py script to check style and, if it passes, a newcode review will be posted on chromium-review.googlesource.com.

If you make additional commits to your local branch, then running git cl upload again in the same branch will merge those commits into the ongoing review as a new patchset.

It's simplest to create a local git branch for each patch you want reviewed separately. git cl keeps track of review status separately for each local branch.

Addressing merge conflicts

If conflicting commits have been landed in the repository for a patch in review, Gerrit will flag the patch as having a merge conflict. In that case, use the instructions above to rebase your commits on top-of-tree and upload a new patchset with the merge conflicts resolved.

Tryjobs

Clicking the CQ DRY RUN button (also, confusingly, labeled COMMIT QUEUE +1) will run the current patchset through all LUCI builders and report the results. It is always a good idea get a green tryjob on a patch before sending it for review to avoid extra back-and-forth.

You can also run git cl try from the commandline to submit a tryjob.

Code reviews

Send your patch to one or more committers in the COMMITTERS file for code review. All patches must receive at least one LGTM by a committer before it can be submitted.

Submitting patches

After your patch has received one or more LGTM commit it by clicking the SUBMIT button (or, confusingly, COMMIT QUEUE +2) in Gerrit. This will run your patch through the builders again before committing to the main openscreen repository.

Additional resources