# Copyright 2019 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Build targets for constructing CIPD release archives. assert(is_fuchsia) import("//build/cipd/cipd.gni") import("//build/util/process_version.gni") # gn binary location. if (host_os == "mac") { _gn_path = "//buildtools/mac/gn" } else if (host_os == "linux") { _gn_path = "//buildtools/linux64/gn" } # Produces a consolidated license file. action("license") { _license_path = "${target_gen_dir}/LICENSE" script = "//tools/licenses.py" inputs = [ "$_gn_path" ] outputs = [ _license_path ] args = [ "license_file", rebase_path(_license_path, root_build_dir), "--gn-target", "//fuchsia/runners:web_runner_pkg", "--gn-out-dir", ".", ] } # Extracts the numeric Chrome build ID and writes it to a file in the output # directory. # # To check out the repository on the commit where the build ID was generated, # simply call `git checkout `, and Git will check out the commit # associated with the tag. process_version("build_id") { template_file = "build_id.template" sources = [ "//chrome/VERSION" ] output = "${target_gen_dir}/build_id.txt" process_only = true } # Prepares a CIPD archive and generates a manifest file. # # Parameters: # package_definition_yaml: The filename to use for the generated CIPD YAML # file. # package: The path where the package will be located inside the CIPD # repository. # description: Sets the "description" field in CIPD metadata. # install_mode: String, should be either "symlink" or "copy". # deps: A list of targets to build prior to copying files. # sources: A list of files to copy into the staging root. template("cipd_archive") { forward_variables_from(invoker, [ "deps", "sources", ]) if (!defined(deps)) { deps = [] } deps += [ ":build_id", ":license", ] if (!defined(sources)) { sources = [] } sources += get_target_outputs(":license") cipd_package_definition(target_name) { testonly = true forward_variables_from(invoker, [ "description", "install_mode", "package", "package_definition_yaml", ]) } } cipd_archive("webrunner") { package_definition_yaml = "webrunner.yaml" package = "chromium/fuchsia/webrunner-\${targetarch}" description = "Prebuilt Chrome and Web Runner binaries for Fuchsia." deps = [ "//fuchsia/engine:web_engine", "//fuchsia/runners:web_runner_pkg", ] sources = [ "${root_gen_dir}/fuchsia/engine/web_engine/web_engine.far", "${root_gen_dir}/fuchsia/runners/web_runner/web_runner.far", ] } cipd_archive("castrunner") { package_definition_yaml = "castrunner.yaml" package = "chromium/fuchsia/castrunner-\${targetarch}" description = "Prebuilt Cast application Runner binaries for Fuchsia." deps = [ "//fuchsia/runners:cast_runner_pkg" ] sources = [ "${root_gen_dir}/fuchsia/runners/cast_runner/cast_runner.far" ] } cipd_archive("http") { package_definition_yaml = "http.yaml" package = "chromium/fuchsia/http-\${targetarch}" description = "Prebuilt HTTP service binary for Fuchsia." deps = [ "//fuchsia/http:http_pkg" ] sources = [ "${root_gen_dir}/fuchsia/http/http/http.far" ] } cipd_archive("web_engine_shell") { package_definition_yaml = "web_engine_shell.yaml" package = "chromium/fuchsia/web_engine_shell-\${targetarch}" description = "Simple command-line embedder for WebEngine." deps = [ "//fuchsia/engine:web_engine_shell_pkg" ] sources = [ "${root_gen_dir}/fuchsia/engine/web_engine_shell/web_engine_shell.far" ] } _stripped_chromedriver_file = "${root_out_dir}/clang_x64/stripped/chromedriver" action("strip_chromedriver_binary") { testonly = true prog_name = "${root_out_dir}/clang_x64/chromedriver" deps = [ "//chrome/test/chromedriver:chromedriver($host_toolchain)" ] script = "//build/gn_run_binary.py" sources = [ "//buildtools/third_party/eu-strip/bin/eu-strip", prog_name, ] outputs = [ _stripped_chromedriver_file ] args = [ rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip", root_build_dir), "-o", rebase_path(_stripped_chromedriver_file, root_build_dir), rebase_path(prog_name, root_build_dir), ] visibility = [ ":*" ] } cipd_archive("chromedriver") { package_definition_yaml = "chromedriver.yaml" package = "chromium/fuchsia/chromedriver/\${os}-\${arch}" description = "Prebuilt Chromedriver binary for Fuchsia host." install_mode = "copy" deps = [ ":strip_chromedriver_binary" ] sources = [ _stripped_chromedriver_file ] } cipd_archive("tests") { _manifest_path = "${target_gen_dir}/test_manifest.json" package_definition_yaml = "tests.yaml" package = "chromium/fuchsia/tests-\${targetarch}" description = "Prebuilt Chromium tests for Fuchsia." deps = [ "//base:base_unittests_pkg", "//fuchsia/runners:cast_runner_integration_tests_pkg", "//fuchsia/runners:web_runner_integration_tests_pkg", "//ipc:ipc_tests_pkg", "//media:media_unittests_pkg", "//mojo:mojo_unittests_pkg", "//skia:skia_unittests_pkg", "//third_party/blink/common:blink_common_unittests_pkg", ] far_sources = [ "${root_gen_dir}/base/base_unittests/base_unittests.far", "${root_gen_dir}/fuchsia/runners/cast_runner_integration_tests/cast_runner_integration_tests.far", "${root_gen_dir}/fuchsia/runners/web_runner_integration_tests/web_runner_integration_tests.far", "${root_gen_dir}/ipc/ipc_tests/ipc_tests.far", "${root_gen_dir}/media/media_unittests/media_unittests.far", "${root_gen_dir}/mojo/mojo_unittests/mojo_unittests.far", "${root_gen_dir}/skia/skia_unittests/skia_unittests.far", "${root_gen_dir}/third_party/blink/common/blink_common_unittests/blink_common_unittests.far", ] # Build a JSON manifest of the tests and include it in the archive. _manifest_contents = [] foreach(source, far_sources) { package_name = get_path_info(source, "name") _manifest_contents += [ { package = package_name component_name = package_name }, ] } write_file(_manifest_path, _manifest_contents, "json") sources = far_sources + [ _manifest_path ] } cipd_archive("debug_symbols") { package_definition_yaml = "debug_symbols.yaml" package = "chromium/fuchsia/debug-symbols-\${targetarch}" description = "Debugging symbols for prebuilt binaries from Chromium." _symbol_tarballs = [ "${root_gen_dir}/fuchsia/engine/web_engine/web_engine.symbols.tar.bz2", "${root_gen_dir}/fuchsia/runners/cast_runner/cast_runner.symbols.tar.bz2", "${root_gen_dir}/fuchsia/runners/web_runner/web_runner.symbols.tar.bz2", ] _symbol_manifest = "$target_gen_dir/debug_symbols.json" write_file(_symbol_manifest, _symbol_tarballs, "json") _symbol_manifest_contents = [] foreach(_symbol_file, _symbol_tarballs) { _symbol_manifest_contents += [ get_path_info(_symbol_file, "file") ] } write_file(_symbol_manifest, _symbol_manifest_contents, "json") deps = [ "//fuchsia/engine:symbol_archive", "//fuchsia/runners:cast_runner_symbol_archive", "//fuchsia/runners:web_runner_symbol_archive", ] sources = [ _symbol_manifest ] + _symbol_tarballs } cipd_archive("clear_key_cdm") { package_definition_yaml = "clear_key_cdm.yaml" package = "chromium/fuchsia/libclearkeycdm-\${targetarch}" description = "Prebuilt libclearkeycdm.so binary for Fuchsia." deps = [ "//media/cdm/library_cdm/clear_key_cdm:clear_key_cdm" ] sources = [ "${root_out_dir}/lib/libclearkeycdm.so" ] } group("cipd") { testonly = true deps = [ ":castrunner", ":chromedriver", ":clear_key_cdm", ":debug_symbols", ":http", ":tests", ":web_engine_shell", ":webrunner", ] }