Roll build/ 007a74bf7..b54b4378f (346 commits)

https://chromium.googlesource.com/chromium/src/build/+log/007a74bf79d5..b54b4378fdd3

$ git log 007a74bf7..b54b4378f --date=short --no-merges --format='%ad %ae %s'
2024-08-07 tasak [PA] Support PartitionAlloc-Everywhere on Windows component build.
2024-08-07 xuri [Install-build-deps] Use check_output instead of check_call
2024-08-07 neis crosier: Move metadata copying to the relevant build files
2024-08-06 zijiehe [fuchsia] copy BundledTestRunner from flutter
2024-08-06 rohitrao Moves swift_source_set.gni and swiftc.py from ios to apple.
2024-08-06 zijiehe [fuchsia] ignore experimental_python_e2e_test type in fuchsia-sdk
2024-08-06 ddorwin [fuchsia] Support API levels as strings in manifests
2024-08-06 erikchen Remove headless buildflags
2024-08-06 justincohen ios: Re-enable lld when building with Xcode 16 post clang roll.
2024-08-06 arthursonzogni spanification: enforce -unsafe-buffer-usage in ash/
2024-08-05 noahrose Revert unsafe_buffers_paths.txt to 6ecd1fe
2024-08-05 arthursonzogni spanification: opt-out dirs failing on the CI.
2024-08-05 noahrose Revert "spanification: enforce -unsafe-buffer-usage in chrome"
2024-08-05 arthursonzogni spanification: enforce -unsafe-buffer-usage in chromeos
2024-08-05 arthursonzogni spanification: enforce -unsafe-buffer-usage in chrome
2024-08-05 aeubanks Roll clang+rust llvmorg-19-init-14561-gecea8371-3000 : llvmorg-20-init-826-gc95abe94-3 / 3cf924b934322fd7b514600a7dc84fc517515346-4 : 595316b4006932405a63862d8fe65f71a6356293-3
2024-08-04 thakis Reland^2 "base_profiler_test_support_library: Don't link libc++ and libc++abi"
2024-08-03 dpranke Revert "Reland "base_profiler_test_support_library: Don't link libc++ and libc++abi""
2024-08-03 thakis Reland "base_profiler_test_support_library: Don't link libc++ and libc++abi"
2024-08-02 agrieve Silence a new R8 warning to unblock autoroller
2024-08-02 arthursonzogni spanification: opt out components/site_isolation
2024-08-02 agrieve 3pp: Fix packages using fetch_github_release.py
2024-08-02 thakis deqp: Re-enable _LIBCPP_REMOVE_TRANSITIVE_INCLUDES
2024-08-02 amaiorano Revert "Disable MSan use-after-dtor checks in fuzzing builds"
2024-08-02 arthursonzogni spanification: enforce -unsafe-buffer-usage in component
2024-08-02 hypan Wrap AVD start failure under the new AvdStartException
2024-08-02 jwata build: Remove remaining use_siso from build/config/ios/BUILD.gn
2024-08-02 agrieve Make 3pp scripts use JDK from repo rather than from CIPD
2024-08-02 thestig Remove Linux udev wrapper code for deprecated udev functions
2024-08-01 chromium-internal-autoroll Roll Fuchsia Internal Images from 22.20240725.102.1 to 22.20240801.103.1
2024-08-01 zhaoyangli [Android] Use a run listener for native coverage data in Java tests
2024-08-01 kawasin Reland "chromeos: ash: mlock .rodata and .text.hot sections"
2024-08-01 drubery Spanify safe_browsing
2024-08-01 thakis Reland^2 "linux/build: Enable fission for (symbol_level = 2) release builds as well"
2024-08-01 thakis win: Allow libc++ to use __int128
2024-07-31 thakis fuchsia: Re-enable _LIBCPP_REMOVE_TRANSITIVE_INCLUDES
2024-07-31 ukai siso: disable remote for rust/bindgen
2024-07-30 arthursonzogni spanification: enforce -unsafe-buffer-usage in ui/
2024-07-30 wnwen pgo: Turn off orderfile when generating PGO
2024-07-30 ukai siso: enable remote action for rust_bindgen
2024-07-30 thestig Change install-build-deps.py Noble checks into package_exists() checks
2024-07-30 thestig Remove libudev0 support
2024-07-30 hypan emulator: Set "require_fast_boot" to True for AVD creation.
2024-07-29 justincohen ios: Disable fatal linker warnings on some iOS builds temporarily.
2024-07-29 aeubanks Turn off -Wdangling-assignment-gsl
2024-07-29 mikt [PA] Update DEPS for new include path #cleanup
2024-07-29 agrieve Android: Pass .jars rather than package names to R8 for SDK extensions
2024-07-29 justincohen ios: Disable lld when building with Xcode 16.
2024-07-29 yoichio Revert "chromeos: ash: mlock .rodata and .text.hot sections"
2024-07-29 kawasin chromeos: ash: mlock .rodata and .text.hot sections
(...)
2024-06-10 ukai siso: set input_root_absolute_path=true for clang if clang_need_input_root_absolute_path=true
2024-06-09 zijiehe [Fuchsia] Wait for the ffx daemon modifications before exiting
2024-06-08 nasko Remove //content/ from exclusion list for unsafe buffers checks.
2024-06-08 bartekn [BRP] Take a step towards enforcing raw_ptr/ref in Renderer code
2024-06-07 akhuang Temporarily disable sized deallocation due to binary size increase.
2024-06-07 danakj Enable the plugin to disable calling span() ctor with a string literal
2024-06-07 agrieve install-build-deps.py: Add libexpat1:i386
2024-06-07 sesse Always define __ARM_NEON__ for Aarch64.
2024-06-07 jwata build: Use the same inputs root on remote workers for JS coverage builds
2024-06-07 ukai siso: set timeout for remote steps
2024-06-07 ukai siso: set timeout to proto/protoc_wrapper
2024-06-07 bpastene Revert "Allow Rust allocation to fail on large allocations"
2024-06-07 dcheng Disable the DWARF line number reader in sanitizer builds
2024-06-06 agrieve Android: Have @BeforeClass / @AfterClass exceptions fail tests
2024-06-06 bpastene Reland "Move a couple telemetry_gpu_integration_tests to generated_scripts"
2024-06-06 danakj Allow Rust allocation to fail on large allocations
2024-06-06 yueshe initial implementation for reporting test runner exceptions to resultdb
2024-06-06 adetaylor Exclude fuzztests from Android etc.
2024-06-06 ukai log "clang_need_input_root_absolute_path" in gn_logs.txt
2024-06-06 kuanhuang Increase mem_per_link_gb for win-arm64-rel builder
2024-06-06 thomasanderson Remove symlink touch
2024-06-06 thomasanderson Drop support for Ubuntu 18.04 Bionic
2024-06-06 chromium-internal-autoroll Roll Fuchsia Internal Images from 20.20240529.3.1 to 21.20240605.3.1
2024-06-05 akhuang Edit so that disabling -Wno-missing-template is added to cflags_cc so it's not used to for bindgen.
2024-06-05 drott [Fontations] Default compile-in Fontations
2024-06-04 akhuang Add !is_nacl to -Wmissing-template-arg-list-after-template-kw disable
2024-06-04 hnakashima Fix Java tests batching. Do not call _GroupTests() twice.
2024-06-04 ellyjones views: enable unsafe buffer checking
2024-06-04 aishwaryarj Revert "Move a couple telemetry_gpu_integration_tests to generated_scripts"
2024-06-04 akhuang Turn off -Wmissing-template-arg-list-after-template-kw for ToT builds.
2024-06-04 pnoland [Omnibox] Re-enable SearchProviderTest for Android
2024-06-04 zijiehe [exception-db] Add metric proto and its implementations
2024-06-04 bpastene Move a couple telemetry_gpu_integration_tests to generated_scripts
2024-06-04 ukai ide_query: handle use_reclient
2024-06-03 thomasanderson Fix touch file creation to update timestamps in build/symlink.py
2024-06-03 agrieve test_runner.py: Disable --concurrent-adb rather than fail for --fast-local-dev
2024-06-03 zijiehe [Fuchsia] Remove unnecessary use-vulkan flag
2024-06-03 jdapena Fix linking Rust libraries with GNU linkers
2024-06-03 ayzhao [libc++] Try using __builtin_trap() instead of IMMEDIATE_CRASH() for the libc++ hardening mode
2024-06-03 xiyuan crosier: Use `--files-from` for `cros_run_test`
2024-06-03 bpastene Add the contents of //build/cros_cache/common/ to Simple Chrome tests
2024-06-03 wnwen android: Fix lint for testonly apks
2024-06-03 davidben Align ubsan_flags and ubsan_security_flags on -fsanitize=shift
2024-06-02 ukai siso: update macossdk version
2024-06-01 thestig Reland "Remove use_gold GN variables"
2024-05-31 djmitche Enable Rust JSON parser in builds
2024-05-31 danakj Run gnrt for stdlib to add libc dependency on Windows
2024-05-31 leszeks [build] Add /Zc:__cplusplus to the Windows compiler flags.
2024-05-31 jwata build: fix deprecated rbe config handling
2024-05-29 chromium-internal-autoroll Roll Fuchsia Internal Images from 20.20240522.2.1 to 20.20240529.3.1

Created with:
  roll-dep build

Change-Id: Id2dd850c8951b9d1fcb221b569aa8c1fd3025b14
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/5768615
Reviewed-by: Mark Foltz <[email protected]>
Commit-Queue: Mark Foltz <[email protected]>
2 files changed
tree: 2f8e9d46598d242eb882d1b8361870282a734e77
  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