| # Copyright 2018 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) |
| |
| import("//build/config/chromecast_build.gni") |
| import("//build/config/fuchsia/config.gni") |
| import("//build/config/fuchsia/package.gni") |
| import("//build/config/sysroot.gni") |
| |
| blobstore_qcow_path = "$root_out_dir/fvm.blk.qcow2" |
| |
| # Generates a script which deploys and executes a package on a device. |
| # |
| # Parameters: |
| # package: The package() target which will be run. |
| # package_name_override: Specifies the name of the generated package, if its |
| # name is different than the |package| target name. This value must match |
| # package_name_override in the |package| target. |
| # package_deps: An array of [package, package_name_override] array pairs |
| # which specify additional dependency packages to be installed |
| # prior to execution. |
| # runner_script: The runner script implementation to use, relative to |
| # "build/fuchsia". Defaults to "exe_runner.py". |
| template("fuchsia_package_runner") { |
| forward_variables_from(invoker, [ "runner_script" ]) |
| |
| if (defined(invoker.package_name_override)) { |
| _pkg_shortname = invoker.package_name_override |
| } else { |
| _pkg_shortname = get_label_info(invoker.package, "name") |
| } |
| |
| _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") + |
| "/" + _pkg_shortname |
| _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest" |
| _package_path = "$_pkg_dir/${_pkg_shortname}.far" |
| _generated_script_path = "$root_build_dir/bin/run_$_pkg_shortname" |
| |
| if (!defined(runner_script)) { |
| runner_script = "//build/fuchsia/exe_runner.py" |
| } |
| |
| action(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "target", |
| "testonly", |
| ]) |
| |
| deps = [ |
| "//build/config/fuchsia:blobstore_extended_qcow2", |
| "//testing/buildbot/filters:fuchsia_filters", |
| invoker.package, |
| ] |
| |
| script = "//build/fuchsia/create_runner_script.py" |
| |
| outputs = [ |
| _generated_script_path, |
| ] |
| |
| data = [ |
| _generated_script_path, |
| _manifest_path, |
| "//build/fuchsia/", |
| "//build/util/lib/", |
| "${fuchsia_sdk}/", |
| ] |
| |
| data_deps = [ |
| invoker.package, |
| ] |
| |
| # Arguments used at build time by the runner script generator. |
| args = [ |
| "--script-output-path", |
| rebase_path(_generated_script_path, root_build_dir, root_out_dir), |
| ] |
| |
| if (defined(invoker.use_test_server) && invoker.use_test_server) { |
| args += [ "--enable-test-server" ] |
| } |
| |
| if (defined(invoker.package_deps)) { |
| foreach(cur_package, invoker.package_deps) { |
| deps += [ cur_package[0] ] |
| dep_package_path = |
| "$root_out_dir/gen/" + get_label_info(cur_package[0], "dir") + "/" + |
| cur_package[1] + "/" + cur_package[1] + ".far" |
| args += [ |
| "--package-dep", |
| rebase_path(dep_package_path, root_out_dir, root_build_dir), |
| ] |
| } |
| } |
| |
| # Arguments used at runtime by the test runner. |
| args += [ |
| "--runner-script", |
| rebase_path(runner_script, root_out_dir), |
| "--output-directory", |
| rebase_path(root_build_dir, root_build_dir), |
| "--target-cpu", |
| target_cpu, |
| "--package", |
| rebase_path(_package_path, root_out_dir, root_build_dir), |
| "--package-name", |
| _pkg_shortname, |
| "--package-manifest", |
| rebase_path(_manifest_path), |
| ] |
| } |
| } |