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