skia2/infra/bots/recipe_modules
Kevin Lubick 805acda3f3 [fuzzer] Remove GL from (now-Vulkan) build
The fuzzer runs against the Vulkan version of Swiftshader.
There are no libGL.so (etc) on the fuzz runtime, so we
want to avoid linking against those.

The GL code that is #ifdef'd out is still necessary to
avoid timeouts on TSAN with our NVIDIA jobs.
https://skia-review.googlesource.com/c/skia/+/502638

Procedure for testing this locally (and iterating):
  1. In oss-fuzz checkout, run
     `python infra/helper.py shell skia`
     to pull up local interactive version of Docker
     fuzzer build image.
  2. Run `compile` in fuzzer shell. Stop after
     the swiftshader compiles and is copied into /out
     with Ctrl + C.
  3. Comment out the swiftshader compilation part [1]
     (no need to re-do this when modifying Skia code).
     `apt-get install nano -y`
     `nano ../build.sh`
  4. Make change to Skia repo using normal methods.
  5. Run the following in the Skia repo
     `git diff origin main > foo.patch`
     Copy the patch into the Docker shell using Ctrl+C
     and nano.
  6. Apply the patch inside the Docker shell
     `git apply foo.patch`
     and re-compile (which should skip right to
     building the fuzzer libs)
     `compile`
  7. Repeat 4-7 or make small changes directly in
     the Docker shell via nano.
  8. When compilation and link succeeds, run
     `ldd /out/api_mock_gpu_canvas`
     to verify GL and friends were not dynamically linked.

[1] https://github.com/google/oss-fuzz/pull/7214/files#diff-76f13875e33875cdd372f1f0933206be599cd87952f1bd1eaa57ca928ee9e3e1R49-R53

Change-Id: Idf569820527c1304b0e5a68fd36295be89dfa2a0
Bug: oss-fuzz:44132
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/503016
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2022-02-02 15:43:47 +00:00
..
build [fuzzer] Remove GL from (now-Vulkan) build 2022-02-02 15:43:47 +00:00
builder_name_schema [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
checkout [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
docker [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
doxygen [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
env [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
flavor Add Pixel 6 phones to the tree. 2022-02-01 14:38:10 +00:00
git [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
gold_upload [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
gsutil [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
infra [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
run [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
vars [python3] Reland recipes -> python3 changes 2021-12-01 13:04:03 +00:00
README.md Increase ClangTidy code coverage by enabling features. 2020-08-03 15:37:30 +00:00

Skia Recipe Modules

This directory contains recipe modules designed to be used by recipes (see infra/bots/recipes). They are all Skia-specific and some are interrelated:

  • builder_name_schema - Helps to derive expected behavior from task (formerly builder) names.
  • core - Use as a starting point for most recipes: runs setup and sync steps.
  • ct - Shared Cluster Telemetry utilities.
  • flavor - Allows the caller to specify a high-level command to run, leaving the platform-specific details to be handled by the specific flavor module.
  • infra - Shared infrastructure-related utilities.
  • run - Utilities for running commands.
  • swarming - Utilities for running Swarming tasks.
  • vars - Common global variables used by Skia recipes/modules.

When you change a recipe module, you generally need to re-train the simulation test:

$ python infra/bots/infra_tests.py --train

Or:

$ cd infra/bots; make train

Each recipe module contains a few files:

  • api.py - This is the meat of the module.
  • __init__.py - Contains a single DEPS variable, indicating the other recipe modules on which this module depends.
  • example.py - Optional, this file contains examples which demonstrate how to use the module and should contain enough tests to achieve 100% coverage for the module. The tests are run using the recipes test command above.