xref: /aosp_15_r20/external/skia/infra/bots/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerpackage(
2*c8dee2aaSAndroid Build Coastguard Worker    default_applicable_licenses = ["//:license"],
3*c8dee2aaSAndroid Build Coastguard Worker)
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard Workerlicenses(["notice"])
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Worker# This rule is a convenient way to build all the task drivers and copy them all into a single
8*c8dee2aaSAndroid Build Coastguard Worker# place as a tar folder. Otherwise, we would need to run many separate bazel build commands and
9*c8dee2aaSAndroid Build Coastguard Worker# then fish the executables out of a deep folder structure like:
10*c8dee2aaSAndroid Build Coastguard Worker# _bazel_bin/infra/bots/task_drivers/bazel_build_all/bazel_build_all_/bazel_build_all
11*c8dee2aaSAndroid Build Coastguard Worker# After this runs, the executables will all be in //_bazel_bin/built_task_drivers.tar
12*c8dee2aaSAndroid Build Coastguard Worker# Why the tar file? Windows binaries are created with .exe and other platforms are not. However,
13*c8dee2aaSAndroid Build Coastguard Worker# outs *must* be static, thus we cannot use a select. Bazel requires us to define all outputs
14*c8dee2aaSAndroid Build Coastguard Worker# exactly, so the only way to support files with different names on different platforms is to
15*c8dee2aaSAndroid Build Coastguard Worker# package them up into a file with the same name.
16*c8dee2aaSAndroid Build Coastguard Worker# Cross compilation is handled as per https://github.com/bazelbuild/rules_go#how-do-i-cross-compile
17*c8dee2aaSAndroid Build Coastguard Workergenrule(
18*c8dee2aaSAndroid Build Coastguard Worker    name = "all_task_drivers",
19*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
20*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/bazel_build",
21*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/bazel_test_benchmark",
22*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/bazel_test_gm",
23*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/bazel_test_precompiled",
24*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/canvaskit_gold",
25*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/check_generated_files",
26*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/codesize",
27*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/compile_wasm_gm_tests",
28*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/cpu_tests",
29*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/g3_canary",
30*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/go_linters",
31*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/perf_puppeteer_canvas",
32*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/perf_puppeteer_render_skps",
33*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/perf_puppeteer_skottie_frames",
34*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/push_apps_from_skia_image",
35*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/recreate_skps",
36*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/run_gn_to_bp",
37*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/external_client",
38*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/run_wasm_gm_tests",
39*c8dee2aaSAndroid Build Coastguard Worker        "//infra/bots/task_drivers/toolchain_layering_check",
40*c8dee2aaSAndroid Build Coastguard Worker        "@org_skia_go_infra//infra/bots/task_drivers/build_push_docker_image",
41*c8dee2aaSAndroid Build Coastguard Worker        "@org_skia_go_infra//infra/bots/task_drivers/canary",
42*c8dee2aaSAndroid Build Coastguard Worker    ],
43*c8dee2aaSAndroid Build Coastguard Worker    outs = ["built_task_drivers.tar"],
44*c8dee2aaSAndroid Build Coastguard Worker    # Make a temporary directory in the output directory, as recommended by
45*c8dee2aaSAndroid Build Coastguard Worker    # https://bazel.build/reference/be/make-variables#predefined_genrule_variables
46*c8dee2aaSAndroid Build Coastguard Worker    # Reminder that $(@D) refers to that output directory and $(SRCS) refers to all
47*c8dee2aaSAndroid Build Coastguard Worker    # the input files, in a space separated list.
48*c8dee2aaSAndroid Build Coastguard Worker    cmd = "mkdir -p $(@D)/tmp_task_drivers && " +
49*c8dee2aaSAndroid Build Coastguard Worker          # Copy all the task drivers to the same folder
50*c8dee2aaSAndroid Build Coastguard Worker          "cp $(SRCS) $(@D)/tmp_task_drivers && " +
51*c8dee2aaSAndroid Build Coastguard Worker          # Tar them up from that folder (so they will be in the top level of the tar directory)
52*c8dee2aaSAndroid Build Coastguard Worker          # The parent directory of our temp directory is where the output tar file should go.
53*c8dee2aaSAndroid Build Coastguard Worker          "cd $(@D)/tmp_task_drivers && tar --file ../built_task_drivers.tar --create . && " +
54*c8dee2aaSAndroid Build Coastguard Worker          # Delete the temp folder (as per the recommendation above)
55*c8dee2aaSAndroid Build Coastguard Worker          "cd .. && rm -rf tmp_task_drivers",
56*c8dee2aaSAndroid Build Coastguard Worker)
57