Commit 25a933ab authored by Kevin Marshall's avatar Kevin Marshall Committed by Commit Bot

[Fuchsia] Generate a CIPD archive of prebuilt test suites.

Stages a CIPD package containing a number of prebuilt test suite FAR
files, with a manifest listing the included suites.

Bug: 943728
Change-Id: I2d03f778cbd4ab379007fd07740d693a72b0935a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1650721Reviewed-by: default avatarFabrice de Gans-Riberi <fdegans@chromium.org>
Commit-Queue: Kevin Marshall <kmarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#668558}
parent 109e8561
......@@ -6,9 +6,7 @@ assert(is_fuchsia)
import("//build/config/fuchsia/fidl_library.gni")
import("//build/util/process_version.gni")
# Location where Fuchsia release archives and supporting files are placed.
_release_artifact_root = "$root_out_dir/fuchsia_artifacts"
import("//fuchsia/cipd/test_archive.gni")
fidl_library("cast_fidl") {
library_name = "cast"
......@@ -26,68 +24,10 @@ fidl_library("cast_fidl") {
]
}
# gn binary location.
if (host_os == "mac") {
_gn_path = "//buildtools/mac/gn"
} else if (host_os == "linux") {
_gn_path = "//buildtools/linux64/gn"
}
# Produces a LICENSE file for Fuchsia packages.
_license_path = "$_release_artifact_root/LICENSE"
action("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 <build-id>`, and Git will check out the commit
# associated with the <build-id> tag.
process_version("build_id") {
template_file = "cipd/build_id.template"
sources = [
"//chrome/VERSION",
]
output = "$_release_artifact_root/build_id.txt"
process_only = true
}
# Puts copies of files at the top level of the CIPD archive's structure.
copy("release_archives") {
sources = [
"$root_gen_dir/fuchsia/engine/chromium/chromium.far",
"$root_gen_dir/fuchsia/http/http/http.far",
"$root_gen_dir/fuchsia/runners/cast_runner/cast_runner.far",
"$root_gen_dir/fuchsia/runners/web_runner/web_runner.far",
]
outputs = [
"$_release_artifact_root/{{source_file_part}}",
]
deps = [
"//fuchsia/engine:web_engine",
"//fuchsia/http:http_pkg",
"//fuchsia/runners:cast_runner_pkg",
"//fuchsia/runners:web_runner_pkg",
]
}
if (is_official_build) {
# Location where Fuchsia release archives and supporting files are placed.
_release_artifact_root = "$root_out_dir/fuchsia_artifacts"
# Location where debug symbol tarballs are placed.
_symbol_artifact_root = "$root_out_dir/symbol_artifacts"
......@@ -101,6 +41,67 @@ if (is_official_build) {
_symbol_manifest = "$target_gen_dir/debug_symbols.json"
write_file(_symbol_manifest, _symbol_tarballs, "json")
# gn binary location.
if (host_os == "mac") {
_gn_path = "//buildtools/mac/gn"
} else if (host_os == "linux") {
_gn_path = "//buildtools/linux64/gn"
}
# Produces a LICENSE file for Fuchsia packages.
_license_path = "$_release_artifact_root/LICENSE"
action("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 <build-id>`, and Git will check out the commit
# associated with the <build-id> tag.
process_version("build_id") {
template_file = "cipd/build_id.template"
sources = [
"//chrome/VERSION",
]
output = "$_release_artifact_root/build_id.txt"
process_only = true
}
# Puts copies of files at the top level of the CIPD archive's structure.
copy("release_archives") {
sources = [
"$root_gen_dir/fuchsia/engine/chromium/chromium.far",
"$root_gen_dir/fuchsia/http/http/http.far",
"$root_gen_dir/fuchsia/runners/cast_runner/cast_runner.far",
"$root_gen_dir/fuchsia/runners/web_runner/web_runner.far",
]
outputs = [
"$_release_artifact_root/{{source_file_part}}",
]
deps = [
"//fuchsia/engine:web_engine",
"//fuchsia/http:http_pkg",
"//fuchsia/runners:cast_runner_pkg",
"//fuchsia/runners:web_runner_pkg",
]
}
copy("symbol_tarballs") {
sources = [
_symbol_manifest,
......@@ -120,14 +121,39 @@ if (is_official_build) {
]
}
cipd_archive("test_archive") {
cipd_manifest_name = "tests.yaml"
cipd_path = "chromium/fuchsia/tests-\${targetarch}"
cipd_description = "Prebuilt Chromium tests for Fuchsia."
include_manifest = true
packages = [
"//base:base_unittests",
"//fuchsia/runners:cast_runner_integration_tests",
"//fuchsia/runners:web_runner_integration_tests",
"//ipc:ipc_tests",
"//media:media_unittests",
"//mojo:mojo_unittests",
"//skia:skia_unittests",
"//third_party/blink/common:blink_common_unittests",
]
deps = [
":build_id",
":license",
]
}
# Specifies the build steps that must be performed before the creation of
# a CIPD archive.
group("archive_sources") {
testonly = true
deps = [
":build_id",
":license",
":release_archives",
":symbol_tarballs",
":test_archive",
]
}
} # is_official_build
......
# 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.
assert(is_fuchsia)
# Prepares a staging directory for creating a CIPD archive of Fuchsia
# packages. Generates a manifest JSON file used by consumers to discover
# the set of available FARs.
#
# Parameters:
# cipd_manifest_name: The filename to use for the generated CIPD YAML file.
# cipd_path: The path where the package will be located inside the CIPD
# repository.
# cipd_description: Sets the "description" field in CIPD metadata.
# packages: A list of test targets whose FAR files will be included in the
# archive.
# Dependency links to these targets are implicitly created.
# include_manifest: If set, includes a JSON-encoded listing of FAR files in
# the archive.
template("cipd_archive") {
forward_variables_from(invoker,
[
"additional_files",
"cipd_description",
"cipd_manifest_name",
"cipd_path",
"deps",
"include_manifest",
"packages",
])
archive_staging_dir = "${target_gen_dir}/${target_name}"
manifest_contents = []
yaml_contents = [
"package: ${cipd_path}",
"description: ${cipd_description}",
"root: \${outdir}/" + rebase_path(archive_staging_dir, root_build_dir),
"data:",
" - file: LICENSE",
]
if (!defined(deps)) {
deps = []
}
deps += [
"//fuchsia:build_id",
"//fuchsia:license",
]
copy_sources = [
"${root_out_dir}/fuchsia_artifacts/build_id.txt",
"${root_out_dir}/fuchsia_artifacts/LICENSE",
]
package_deps = []
foreach(package, packages) {
package_name = get_label_info(package, "name")
package_deps += [ "${package}_pkg" ]
copy_sources += [ root_build_dir + "/gen" + get_label_info(package, "dir") +
"/" + package_name + "/" + package_name + ".far" ]
manifest_contents += [
{
package = package_name
component_name = package_name
},
]
yaml_contents += [ " - file: ${package_name}.far" ]
}
if (defined(include_manifest) && include_manifest) {
yaml_contents += [ " - file: test_manifest.json" ]
write_file("${archive_staging_dir}/test_manifest.json",
manifest_contents,
"json")
}
write_file("${archive_staging_dir}/${cipd_manifest_name}", yaml_contents)
copy(target_name) {
testonly = true
sources = copy_sources
deps += package_deps
outputs = [
"${archive_staging_dir}/{{source_file_part}}",
]
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment