169570cc8Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
269570cc8Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
369570cc8Sopenharmony_ci# you may not use this file except in compliance with the License.
469570cc8Sopenharmony_ci# You may obtain a copy of the License at
569570cc8Sopenharmony_ci#
669570cc8Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
769570cc8Sopenharmony_ci#
869570cc8Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
969570cc8Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
1069570cc8Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1169570cc8Sopenharmony_ci# See the License for the specific language governing permissions and
1269570cc8Sopenharmony_ci# limitations under the License.
1369570cc8Sopenharmony_ci
1469570cc8Sopenharmony_ciimport("//build/config/python.gni")
1569570cc8Sopenharmony_ciimport("//build/templates/common/copy.gni")
1669570cc8Sopenharmony_ci
1769570cc8Sopenharmony_citemplate("ohos_prebuilt_appdata_sandbox") {
1869570cc8Sopenharmony_ci  assert(defined(invoker.source), "source must be defined for ${target_name}.")
1969570cc8Sopenharmony_ci
2069570cc8Sopenharmony_ci  _fixed_sandbox_target = "${target_name}_sandbox_fixed"
2169570cc8Sopenharmony_ci  _fixed_sandbox_file = target_gen_dir + "/${target_name}.fixed/" +
2269570cc8Sopenharmony_ci                        get_path_info(invoker.source, "file")
2369570cc8Sopenharmony_ci  _output_para_file = get_path_info(invoker.source, "file")
2469570cc8Sopenharmony_ci
2569570cc8Sopenharmony_ci  action_with_pydeps(_fixed_sandbox_target) {
2669570cc8Sopenharmony_ci    deps = []
2769570cc8Sopenharmony_ci    script = "//base/startup/appspawn/etc/sandbox/appdata_sandbox_fixer.py"
2869570cc8Sopenharmony_ci    depfile = "${target_gen_dir}/${target_name}.d"
2969570cc8Sopenharmony_ci    args = [
3069570cc8Sopenharmony_ci      "--output",
3169570cc8Sopenharmony_ci      rebase_path(_fixed_sandbox_file, root_build_dir),
3269570cc8Sopenharmony_ci      "--source-file",
3369570cc8Sopenharmony_ci      rebase_path(invoker.source, root_build_dir),
3469570cc8Sopenharmony_ci      "--depfile",
3569570cc8Sopenharmony_ci      rebase_path(depfile, root_build_dir),
3669570cc8Sopenharmony_ci    ]
3769570cc8Sopenharmony_ci    if (defined(invoker.extra_sandbox_cfgs)) {
3869570cc8Sopenharmony_ci      foreach(extra, invoker.extra_sandbox_cfgs) {
3969570cc8Sopenharmony_ci        args += [
4069570cc8Sopenharmony_ci          "--extra_sandbox_cfg",
4169570cc8Sopenharmony_ci          rebase_path(extra, root_build_dir),
4269570cc8Sopenharmony_ci        ]
4369570cc8Sopenharmony_ci      }
4469570cc8Sopenharmony_ci    }
4569570cc8Sopenharmony_ci    if (defined(invoker.patterns)) {
4669570cc8Sopenharmony_ci      foreach(pattern, invoker.patterns) {
4769570cc8Sopenharmony_ci        args += [
4869570cc8Sopenharmony_ci          "--patterns",
4969570cc8Sopenharmony_ci          pattern,
5069570cc8Sopenharmony_ci        ]
5169570cc8Sopenharmony_ci      }
5269570cc8Sopenharmony_ci    }
5369570cc8Sopenharmony_ci    inputs = [ invoker.source ]
5469570cc8Sopenharmony_ci    outputs = [ _fixed_sandbox_file ]
5569570cc8Sopenharmony_ci  }
5669570cc8Sopenharmony_ci
5769570cc8Sopenharmony_ci  ohos_copy(target_name) {
5869570cc8Sopenharmony_ci    deps = [ ":$_fixed_sandbox_target" ]
5969570cc8Sopenharmony_ci    forward_variables_from(invoker,
6069570cc8Sopenharmony_ci                           [
6169570cc8Sopenharmony_ci                             "testonly",
6269570cc8Sopenharmony_ci                             "visibility",
6369570cc8Sopenharmony_ci
6469570cc8Sopenharmony_ci                             "deps",
6569570cc8Sopenharmony_ci                             "public_configs",
6669570cc8Sopenharmony_ci                             "subsystem_name",
6769570cc8Sopenharmony_ci                             "part_name",
6869570cc8Sopenharmony_ci
6969570cc8Sopenharmony_ci                             # For generate_module_info
7069570cc8Sopenharmony_ci                             "install_images",
7169570cc8Sopenharmony_ci                             "module_install_dir",
7269570cc8Sopenharmony_ci                             "relative_install_dir",
7369570cc8Sopenharmony_ci                             "symlink_target_name",
7469570cc8Sopenharmony_ci
7569570cc8Sopenharmony_ci                             # Open source license related
7669570cc8Sopenharmony_ci                             "license_file",
7769570cc8Sopenharmony_ci                             "license_as_sources",
7869570cc8Sopenharmony_ci                           ])
7969570cc8Sopenharmony_ci    sources = [ _fixed_sandbox_file ]
8069570cc8Sopenharmony_ci    outputs = [ "${target_out_dir}/${target_name}/${_output_para_file}" ]
8169570cc8Sopenharmony_ci    module_type = "etc"
8269570cc8Sopenharmony_ci    install_enable = true
8369570cc8Sopenharmony_ci    module_source_dir = "${target_out_dir}/${target_name}"
8469570cc8Sopenharmony_ci    module_install_name = _output_para_file
8569570cc8Sopenharmony_ci    if (defined(invoker.install_enable)) {
8669570cc8Sopenharmony_ci      install_enable = invoker.install_enable
8769570cc8Sopenharmony_ci    }
8869570cc8Sopenharmony_ci  }
8969570cc8Sopenharmony_ci}
90