| # Copyright 2021 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Invokes the check-licenses tool. |
| # |
| # Parameters |
| # |
| # configs (optional) |
| # [list] Paths to config files. |
| # Default: "//tools/check-licenses/config/config.json" |
| # |
| # skip_dirs (optional) |
| # [list] Directories to skip checking. |
| # |
| # notice_txt (optional) |
| # [list] Paths to NOTICE.txt files to parse. |
| # |
| # license_allow_list (optional) |
| # [list] Map of license pattern file (.lic) to list of directories |
| # where the license can be used. |
| # |
| # testonly, visibility |
| template("license_data") { |
| action(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "configs", |
| "license_allow_list", |
| "notice_txt", |
| "outputs", |
| "skip_dirs", |
| "testonly", |
| "visibility", |
| ]) |
| |
| # check-licenses assumes that it runs from //, |
| # but actions run from root_build_dir. |
| # This shell script sets the CWD and then calls check-licenses. |
| script = "//tools/check-licenses/license_data.sh" |
| |
| license_tool = "//tools/check-licenses($host_toolchain)" |
| deps = [ license_tool ] |
| |
| if (!defined(configs)) { |
| configs = [ "//tools/check-licenses/config/config.json" ] |
| } |
| sources = configs |
| |
| outputs = [ |
| "$target_out_dir/NOTICE.html.gz", |
| "$target_out_dir/NOTICE.txt.gz", |
| ] |
| |
| args = [ |
| ### Args for license_data.sh |
| rebase_path("//", root_build_dir), |
| rebase_path( |
| get_label_info(license_tool, "root_out_dir") + "/check-licenses", |
| "//"), |
| |
| ### Args for check-licenses |
| # TODO: Remove once all files are attributed in the file generated by |
| # check-licenses. |
| "--exit_on_unlicensed_files=false", |
| "--config_file", |
| string_join(",", rebase_path(configs, "//")), |
| "--out_dir", |
| rebase_path(target_out_dir, "//"), |
| ] |
| |
| if (defined(skip_dirs)) { |
| args += [ "--skip_dirs" ] + string_join(",", rebase_path(skip_dirs, "//")) |
| } |
| |
| if (defined(notice_txt)) { |
| args += |
| [ "--notice_txt" ] + string_join(",", rebase_path(notice_txt, "//")) |
| } |
| |
| if (defined(license_allow_list)) { |
| args += [ "--license_allow_list" ] + "{ " + |
| string_join(", ", rebase_path(notice_txt, "//")) + " }" |
| } |
| } |
| } |