15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License.
45f9996aaSopenharmony_ci# You may obtain a copy of the License at
55f9996aaSopenharmony_ci#
65f9996aaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
75f9996aaSopenharmony_ci#
85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and
125f9996aaSopenharmony_ci# limitations under the License.
135f9996aaSopenharmony_ci
145f9996aaSopenharmony_ciimport("//build/config/python.gni")
155f9996aaSopenharmony_ciimport("//build/ohos.gni")
165f9996aaSopenharmony_ciimport("//build/ohos/build_var.gni")
175f9996aaSopenharmony_ci
185f9996aaSopenharmony_ci# import target_platform_list
195f9996aaSopenharmony_ciimport("${build_configs_path}/platforms_list.gni")
205f9996aaSopenharmony_cigroup("make_images") {
215f9996aaSopenharmony_ci  deps = []
225f9996aaSopenharmony_ci  if (is_standard_system) {
235f9996aaSopenharmony_ci    deps = [
245f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
255f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
265f9996aaSopenharmony_ci    ]
275f9996aaSopenharmony_ci    foreach(_platform, target_platform_list) {
285f9996aaSopenharmony_ci      deps += [
295f9996aaSopenharmony_ci        ":${_platform}_eng_chipset_image",
305f9996aaSopenharmony_ci        ":${_platform}_eng_system_image",
315f9996aaSopenharmony_ci        ":${_platform}_sys_prod_image",
325f9996aaSopenharmony_ci        ":${_platform}_system_image",
335f9996aaSopenharmony_ci        ":${_platform}_updater_ramdisk_image",
345f9996aaSopenharmony_ci        ":${_platform}_userdata_image",
355f9996aaSopenharmony_ci        ":${_platform}_vendor_image",
365f9996aaSopenharmony_ci      ]
375f9996aaSopenharmony_ci      if (enable_ramdisk) {
385f9996aaSopenharmony_ci        deps += [ ":${_platform}_ramdisk_image" ]
395f9996aaSopenharmony_ci      }
405f9996aaSopenharmony_ci    }
415f9996aaSopenharmony_ci    deps += [ ":chip_prod_image" ]
425f9996aaSopenharmony_ci    if (is_standard_system && device_name == "rk3568") {
435f9996aaSopenharmony_ci      deps += [ ":mk_chip_ckm_img" ]
445f9996aaSopenharmony_ci    }
455f9996aaSopenharmony_ci  } else {
465f9996aaSopenharmony_ci    deps += [ "//build/ohos/packages:packer" ]
475f9996aaSopenharmony_ci  }
485f9996aaSopenharmony_ci}
495f9996aaSopenharmony_ci
505f9996aaSopenharmony_cigroup("eng_system_image") {
515f9996aaSopenharmony_ci  deps = []
525f9996aaSopenharmony_ci  if (is_standard_system) {
535f9996aaSopenharmony_ci    deps += [
545f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
555f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
565f9996aaSopenharmony_ci    ]
575f9996aaSopenharmony_ci  }
585f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
595f9996aaSopenharmony_ci    deps += [ ":${_platform}_eng_system_image" ]
605f9996aaSopenharmony_ci  }
615f9996aaSopenharmony_ci}
625f9996aaSopenharmony_ci
635f9996aaSopenharmony_cigroup("eng_chipset_image") {
645f9996aaSopenharmony_ci  deps = []
655f9996aaSopenharmony_ci  if (is_standard_system) {
665f9996aaSopenharmony_ci    deps += [
675f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
685f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
695f9996aaSopenharmony_ci    ]
705f9996aaSopenharmony_ci  }
715f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
725f9996aaSopenharmony_ci    deps += [ ":${_platform}_eng_chipset_image" ]
735f9996aaSopenharmony_ci  }
745f9996aaSopenharmony_ci}
755f9996aaSopenharmony_ci
765f9996aaSopenharmony_cigroup("chip_prod_image") {
775f9996aaSopenharmony_ci  deps = []
785f9996aaSopenharmony_ci  if (is_standard_system) {
795f9996aaSopenharmony_ci    deps += [
805f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
815f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
825f9996aaSopenharmony_ci    ]
835f9996aaSopenharmony_ci  }
845f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
855f9996aaSopenharmony_ci    if (chip_product_list == []) {
865f9996aaSopenharmony_ci      deps += [ ":${_platform}_chip_prod_image" ]
875f9996aaSopenharmony_ci    } else {
885f9996aaSopenharmony_ci      foreach(_product, chip_product_list) {
895f9996aaSopenharmony_ci        deps += [ ":${_platform}_${_product}_chip_prod_image" ]
905f9996aaSopenharmony_ci      }
915f9996aaSopenharmony_ci    }
925f9996aaSopenharmony_ci  }
935f9996aaSopenharmony_ci}
945f9996aaSopenharmony_ci
955f9996aaSopenharmony_cigroup("sys_prod_image") {
965f9996aaSopenharmony_ci  deps = []
975f9996aaSopenharmony_ci  if (is_standard_system) {
985f9996aaSopenharmony_ci    deps += [
995f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1005f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1015f9996aaSopenharmony_ci    ]
1025f9996aaSopenharmony_ci  }
1035f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1045f9996aaSopenharmony_ci    deps += [ ":${_platform}_sys_prod_image" ]
1055f9996aaSopenharmony_ci  }
1065f9996aaSopenharmony_ci}
1075f9996aaSopenharmony_ci
1085f9996aaSopenharmony_cigroup("system_image") {
1095f9996aaSopenharmony_ci  deps = []
1105f9996aaSopenharmony_ci  if (is_standard_system) {
1115f9996aaSopenharmony_ci    deps += [
1125f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1135f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1145f9996aaSopenharmony_ci    ]
1155f9996aaSopenharmony_ci  }
1165f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1175f9996aaSopenharmony_ci    deps += [ ":${_platform}_system_image" ]
1185f9996aaSopenharmony_ci  }
1195f9996aaSopenharmony_ci}
1205f9996aaSopenharmony_ci
1215f9996aaSopenharmony_cigroup("userdata_image") {
1225f9996aaSopenharmony_ci  deps = []
1235f9996aaSopenharmony_ci  if (is_standard_system) {
1245f9996aaSopenharmony_ci    deps += [
1255f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1265f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1275f9996aaSopenharmony_ci    ]
1285f9996aaSopenharmony_ci  }
1295f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1305f9996aaSopenharmony_ci    deps += [ ":${_platform}_userdata_image" ]
1315f9996aaSopenharmony_ci  }
1325f9996aaSopenharmony_ci}
1335f9996aaSopenharmony_ci
1345f9996aaSopenharmony_cigroup("vendor_image") {
1355f9996aaSopenharmony_ci  deps = []
1365f9996aaSopenharmony_ci  if (is_standard_system) {
1375f9996aaSopenharmony_ci    deps += [
1385f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1395f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1405f9996aaSopenharmony_ci    ]
1415f9996aaSopenharmony_ci  }
1425f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1435f9996aaSopenharmony_ci    deps += [ ":${_platform}_vendor_image" ]
1445f9996aaSopenharmony_ci  }
1455f9996aaSopenharmony_ci}
1465f9996aaSopenharmony_ci
1475f9996aaSopenharmony_cigroup("ramdisk_image") {
1485f9996aaSopenharmony_ci  deps = []
1495f9996aaSopenharmony_ci  if (is_standard_system) {
1505f9996aaSopenharmony_ci    deps += [
1515f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1525f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1535f9996aaSopenharmony_ci    ]
1545f9996aaSopenharmony_ci  }
1555f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1565f9996aaSopenharmony_ci    if (enable_ramdisk) {
1575f9996aaSopenharmony_ci      deps += [ ":${_platform}_ramdisk_image" ]
1585f9996aaSopenharmony_ci    }
1595f9996aaSopenharmony_ci  }
1605f9996aaSopenharmony_ci}
1615f9996aaSopenharmony_ci
1625f9996aaSopenharmony_cigroup("updater_ramdisk_image") {
1635f9996aaSopenharmony_ci  deps = []
1645f9996aaSopenharmony_ci  if (is_standard_system) {
1655f9996aaSopenharmony_ci    deps += [
1665f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1675f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1685f9996aaSopenharmony_ci    ]
1695f9996aaSopenharmony_ci  }
1705f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1715f9996aaSopenharmony_ci    deps += [ ":${_platform}_updater_ramdisk_image" ]
1725f9996aaSopenharmony_ci  }
1735f9996aaSopenharmony_ci}
1745f9996aaSopenharmony_ci
1755f9996aaSopenharmony_cigroup("updater_image") {
1765f9996aaSopenharmony_ci  deps = []
1775f9996aaSopenharmony_ci  if (is_standard_system) {
1785f9996aaSopenharmony_ci    deps += [
1795f9996aaSopenharmony_ci      "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
1805f9996aaSopenharmony_ci      "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
1815f9996aaSopenharmony_ci    ]
1825f9996aaSopenharmony_ci  }
1835f9996aaSopenharmony_ci  foreach(_platform, target_platform_list) {
1845f9996aaSopenharmony_ci    deps += [ ":${_platform}_updater_ramdisk_image" ]
1855f9996aaSopenharmony_ci  }
1865f9996aaSopenharmony_ci}
1875f9996aaSopenharmony_ci
1885f9996aaSopenharmony_cibuild_image_tools_path = [
1895f9996aaSopenharmony_ci  "//out/${device_name}/clang_x64/thirdparty/e2fsprogs",
1905f9996aaSopenharmony_ci  "//out/${device_name}/clang_x64/thirdparty/f2fs-tools",
1915f9996aaSopenharmony_ci  "//third_party/e2fsprogs/prebuilt/host/bin",
1925f9996aaSopenharmony_ci  "//build/ohos/images/mkimage",
1935f9996aaSopenharmony_ci]
1945f9996aaSopenharmony_ci
1955f9996aaSopenharmony_cibase_dir = "//build/ohos/images/mkimage"
1965f9996aaSopenharmony_ci
1975f9996aaSopenharmony_ciforeach(_platform, target_platform_list) {
1985f9996aaSopenharmony_ci  current_platform = _platform
1995f9996aaSopenharmony_ci  current_platform_dir = "${product_output_dir}/$current_platform"
2005f9996aaSopenharmony_ci
2015f9996aaSopenharmony_ci  system_module_info_list = "${current_platform_dir}/system_module_info.json"
2025f9996aaSopenharmony_ci  system_modules_list = "${current_platform_dir}/system_modules_list.txt"
2035f9996aaSopenharmony_ci
2045f9996aaSopenharmony_ci  image_list = [
2055f9996aaSopenharmony_ci    "system",
2065f9996aaSopenharmony_ci    "vendor",
2075f9996aaSopenharmony_ci    "userdata",
2085f9996aaSopenharmony_ci    "sys_prod",
2095f9996aaSopenharmony_ci    "chip_prod",
2105f9996aaSopenharmony_ci    "updater_ramdisk",
2115f9996aaSopenharmony_ci    "eng_system",
2125f9996aaSopenharmony_ci    "eng_chipset",
2135f9996aaSopenharmony_ci  ]
2145f9996aaSopenharmony_ci  if (enable_ramdisk) {
2155f9996aaSopenharmony_ci    image_list += [ "ramdisk" ]
2165f9996aaSopenharmony_ci  }
2175f9996aaSopenharmony_ci  if (enable_adlt) {
2185f9996aaSopenharmony_ci    action("execute_adlt") {
2195f9996aaSopenharmony_ci      if (target_cpu == "arm64" || target_cpu == "x86_64") {
2205f9996aaSopenharmony_ci        module_type = "lib64"
2215f9996aaSopenharmony_ci      } else if (target_cpu == "arm" || target_cpu == "x86") {
2225f9996aaSopenharmony_ci        module_type = "lib"
2235f9996aaSopenharmony_ci      } else {
2245f9996aaSopenharmony_ci        assert(false, "Unsupported target_cpu: $target_cpu")
2255f9996aaSopenharmony_ci      }
2265f9996aaSopenharmony_ci      script = "//build/ohos/images/adlt_wrapper.py"
2275f9996aaSopenharmony_ci      args = [
2285f9996aaSopenharmony_ci        "--allowed-lib-list",
2295f9996aaSopenharmony_ci        rebase_path(allowed_lib_list),
2305f9996aaSopenharmony_ci        "--output-file",
2315f9996aaSopenharmony_ci        rebase_path(
2325f9996aaSopenharmony_ci            "${current_platform_dir}/system/${module_type}/${adlt_lib_name}"),
2335f9996aaSopenharmony_ci        "--adlt-exe",
2345f9996aaSopenharmony_ci        rebase_path(adlt_exe),
2355f9996aaSopenharmony_ci        "--adlt-root-dir",
2365f9996aaSopenharmony_ci        rebase_path("${current_platform_dir}"),
2375f9996aaSopenharmony_ci      ]
2385f9996aaSopenharmony_ci      deps = [ "//build/ohos/packages:${_platform}_install_modules" ]
2395f9996aaSopenharmony_ci      inputs = [
2405f9996aaSopenharmony_ci        allowed_lib_list,
2415f9996aaSopenharmony_ci        adlt_exe,
2425f9996aaSopenharmony_ci      ]
2435f9996aaSopenharmony_ci      outputs =
2445f9996aaSopenharmony_ci          [ "${current_platform_dir}/system/${module_type}/${adlt_lib_name}" ]
2455f9996aaSopenharmony_ci    }
2465f9996aaSopenharmony_ci  }
2475f9996aaSopenharmony_ci
2485f9996aaSopenharmony_ci  foreach(_image_name, image_list) {
2495f9996aaSopenharmony_ci    action_with_pydeps("${_platform}_${_image_name}_image") {
2505f9996aaSopenharmony_ci      script = "//build/ohos/images/build_image.py"
2515f9996aaSopenharmony_ci      depfile = "$target_gen_dir/$target_name.d"
2525f9996aaSopenharmony_ci      deps = [ "//build/ohos/packages:${_platform}_install_modules" ]
2535f9996aaSopenharmony_ci      if (enable_adlt && _image_name == "system") {
2545f9996aaSopenharmony_ci        deps += [ ":execute_adlt" ]
2555f9996aaSopenharmony_ci      }
2565f9996aaSopenharmony_ci      if (!asan_detector) {
2575f9996aaSopenharmony_ci        deps += [ "//build/ohos/packages:process_field_validate" ]
2585f9996aaSopenharmony_ci        if (build_seccomp) {
2595f9996aaSopenharmony_ci          deps += [ "//build/ohos/packages:check_seccomp_filter_name" ]
2605f9996aaSopenharmony_ci        }
2615f9996aaSopenharmony_ci      }
2625f9996aaSopenharmony_ci
2635f9996aaSopenharmony_ci      base_path = base_dir
2645f9996aaSopenharmony_ci      if (is_debug) {
2655f9996aaSopenharmony_ci        base_path = "${base_dir}/debug"
2665f9996aaSopenharmony_ci      }
2675f9996aaSopenharmony_ci      image_config_file = "${base_path}/${_image_name}_image_conf.txt"
2685f9996aaSopenharmony_ci      if (asan_detector) {
2695f9996aaSopenharmony_ci        image_config_file_asan =
2705f9996aaSopenharmony_ci            "${base_path}/asan/${_image_name}_image_conf.txt"
2715f9996aaSopenharmony_ci
2725f9996aaSopenharmony_ci        # Check if asan image file exists
2735f9996aaSopenharmony_ci        _file_exists_script = "//build/ohos/file_exists.py"
2745f9996aaSopenharmony_ci        _process_args = [
2755f9996aaSopenharmony_ci          "--filename",
2765f9996aaSopenharmony_ci          rebase_path(image_config_file_asan, root_build_dir),
2775f9996aaSopenharmony_ci        ]
2785f9996aaSopenharmony_ci        _result = exec_script(_file_exists_script, _process_args, "string")
2795f9996aaSopenharmony_ci        if (_result == "True") {
2805f9996aaSopenharmony_ci          image_config_file = image_config_file_asan
2815f9996aaSopenharmony_ci        }
2825f9996aaSopenharmony_ci      }
2835f9996aaSopenharmony_ci      device_image_config_file =
2845f9996aaSopenharmony_ci          "${product_output_dir}/imagesconf/${_image_name}_image_conf.txt"
2855f9996aaSopenharmony_ci      if (_image_name == "ramdisk" || _image_name == "updater_ramdisk") {
2865f9996aaSopenharmony_ci        output_image_file = "$root_build_dir/${_image_name}.img"
2875f9996aaSopenharmony_ci      } else {
2885f9996aaSopenharmony_ci        output_image_file = "$current_platform_dir/images/${_image_name}.img"
2895f9996aaSopenharmony_ci      }
2905f9996aaSopenharmony_ci      if (_image_name == "updater_ramdisk") {
2915f9996aaSopenharmony_ci        image_input_path = "$current_platform_dir/updater"
2925f9996aaSopenharmony_ci      } else {
2935f9996aaSopenharmony_ci        image_input_path = "$current_platform_dir/${_image_name}"
2945f9996aaSopenharmony_ci      }
2955f9996aaSopenharmony_ci      if (_image_name == "userdata") {
2965f9996aaSopenharmony_ci        image_input_path = "$current_platform_dir/data"
2975f9996aaSopenharmony_ci      }
2985f9996aaSopenharmony_ci
2995f9996aaSopenharmony_ci      sources = [
3005f9996aaSopenharmony_ci        image_config_file,
3015f9996aaSopenharmony_ci        system_module_info_list,
3025f9996aaSopenharmony_ci        system_modules_list,
3035f9996aaSopenharmony_ci      ]
3045f9996aaSopenharmony_ci      outputs = [ output_image_file ]
3055f9996aaSopenharmony_ci      args = [
3065f9996aaSopenharmony_ci        "--depfile",
3075f9996aaSopenharmony_ci        rebase_path(depfile, root_build_dir),
3085f9996aaSopenharmony_ci        "--image-name",
3095f9996aaSopenharmony_ci        _image_name,
3105f9996aaSopenharmony_ci        "--input-path",
3115f9996aaSopenharmony_ci        rebase_path(image_input_path, root_build_dir),
3125f9996aaSopenharmony_ci        "--image-config-file",
3135f9996aaSopenharmony_ci        rebase_path(image_config_file, root_build_dir),
3145f9996aaSopenharmony_ci        "--device-image-config-file",
3155f9996aaSopenharmony_ci        rebase_path(device_image_config_file, root_build_dir),
3165f9996aaSopenharmony_ci        "--output-image",
3175f9996aaSopenharmony_ci        rebase_path(output_image_file, root_build_dir),
3185f9996aaSopenharmony_ci        "--target-cpu",
3195f9996aaSopenharmony_ci        target_cpu,
3205f9996aaSopenharmony_ci        "--build-variant",
3215f9996aaSopenharmony_ci        build_variant,
3225f9996aaSopenharmony_ci        "--build-image-tools-path",
3235f9996aaSopenharmony_ci      ]
3245f9996aaSopenharmony_ci      args += rebase_path(build_image_tools_path, root_build_dir)
3255f9996aaSopenharmony_ci      if (sparse_image) {
3265f9996aaSopenharmony_ci        args += [ "--sparse-image" ]
3275f9996aaSopenharmony_ci      }
3285f9996aaSopenharmony_ci    }
3295f9996aaSopenharmony_ci  }
3305f9996aaSopenharmony_ci
3315f9996aaSopenharmony_ci  # Used to generate chip_prod images of different products
3325f9996aaSopenharmony_ci  foreach(_product, chip_product_list) {
3335f9996aaSopenharmony_ci    _image_name = "chip_prod"
3345f9996aaSopenharmony_ci    action_with_pydeps("${_platform}_${_product}_chip_prod_image") {
3355f9996aaSopenharmony_ci      script = "//build/ohos/images/build_image.py"
3365f9996aaSopenharmony_ci      depfile = "$target_gen_dir/$target_name.d"
3375f9996aaSopenharmony_ci      deps = [ "//build/ohos/packages:${_platform}_install_modules" ]
3385f9996aaSopenharmony_ci
3395f9996aaSopenharmony_ci      image_config_file = "${base_dir}/${_image_name}_image_conf.txt"
3405f9996aaSopenharmony_ci      device_image_config_file =
3415f9996aaSopenharmony_ci          "${product_output_dir}/imagesconf/${_image_name}_image_conf.txt"
3425f9996aaSopenharmony_ci      image_input_path = "${current_platform_dir}/${_image_name}/${_product}"
3435f9996aaSopenharmony_ci      output_image_file =
3445f9996aaSopenharmony_ci          "${current_platform_dir}/images/${_product}/${_image_name}.img"
3455f9996aaSopenharmony_ci
3465f9996aaSopenharmony_ci      sources = [
3475f9996aaSopenharmony_ci        image_config_file,
3485f9996aaSopenharmony_ci        system_module_info_list,
3495f9996aaSopenharmony_ci        system_modules_list,
3505f9996aaSopenharmony_ci      ]
3515f9996aaSopenharmony_ci      outputs = [ output_image_file ]
3525f9996aaSopenharmony_ci
3535f9996aaSopenharmony_ci      args = [
3545f9996aaSopenharmony_ci        "--depfile",
3555f9996aaSopenharmony_ci        rebase_path(depfile, root_build_dir),
3565f9996aaSopenharmony_ci        "--image-name",
3575f9996aaSopenharmony_ci        _image_name,
3585f9996aaSopenharmony_ci        "--input-path",
3595f9996aaSopenharmony_ci        rebase_path(image_input_path, root_build_dir),
3605f9996aaSopenharmony_ci        "--image-config-file",
3615f9996aaSopenharmony_ci        rebase_path(image_config_file, root_build_dir),
3625f9996aaSopenharmony_ci        "--device-image-config-file",
3635f9996aaSopenharmony_ci        rebase_path(device_image_config_file, root_build_dir),
3645f9996aaSopenharmony_ci        "--output-image",
3655f9996aaSopenharmony_ci        rebase_path(output_image_file, root_build_dir),
3665f9996aaSopenharmony_ci        "--target-cpu",
3675f9996aaSopenharmony_ci        target_cpu,
3685f9996aaSopenharmony_ci        "--build-image-tools-path",
3695f9996aaSopenharmony_ci      ]
3705f9996aaSopenharmony_ci      args += rebase_path(build_image_tools_path, root_build_dir)
3715f9996aaSopenharmony_ci      if (sparse_image) {
3725f9996aaSopenharmony_ci        args += [ "--sparse-image" ]
3735f9996aaSopenharmony_ci      }
3745f9996aaSopenharmony_ci    }
3755f9996aaSopenharmony_ci  }
3765f9996aaSopenharmony_ci
3775f9996aaSopenharmony_ci  action("mk_chip_ckm_img") {
3785f9996aaSopenharmony_ci    script = "//build/ohos/images/mkimage/mkchip_ckm.py"
3795f9996aaSopenharmony_ci    device_name = "packages/phone/images/chip_ckm.img"
3805f9996aaSopenharmony_ci    build_image_tool_path = [
3815f9996aaSopenharmony_ci      "$root_build_dir/clang_x64/thirdparty/f2fs-tools",
3825f9996aaSopenharmony_ci      "$root_build_dir/clang_x64/thirdparty/e2fsprogs",
3835f9996aaSopenharmony_ci      "//third_party/e2fsprogs/prebuilt/host/bin",
3845f9996aaSopenharmony_ci    ]
3855f9996aaSopenharmony_ci    config_file_path = "//build/ohos/images/mkimage/chip_ckm.txt"
3865f9996aaSopenharmony_ci    mkextimage_tools_path = "//build/ohos/images/mkimage/mkextimage.py"
3875f9996aaSopenharmony_ci
3885f9996aaSopenharmony_ci    src_dir = "packages/phone/chip_ckm"
3895f9996aaSopenharmony_ci    args = [
3905f9996aaSopenharmony_ci      "--src-dir",
3915f9996aaSopenharmony_ci      src_dir,
3925f9996aaSopenharmony_ci      "--device-name",
3935f9996aaSopenharmony_ci      device_name,
3945f9996aaSopenharmony_ci      "--config-file-path",
3955f9996aaSopenharmony_ci      rebase_path(config_file_path, root_build_dir),
3965f9996aaSopenharmony_ci      "--mkextimage-tools-path",
3975f9996aaSopenharmony_ci      rebase_path(mkextimage_tools_path, root_build_dir),
3985f9996aaSopenharmony_ci      "--build-image-tools-path",
3995f9996aaSopenharmony_ci    ]
4005f9996aaSopenharmony_ci    args += rebase_path(build_image_tool_path, root_build_dir)
4015f9996aaSopenharmony_ci    if (is_standard_system) {
4025f9996aaSopenharmony_ci      deps = [
4035f9996aaSopenharmony_ci        "//base/security/selinux_adapter:build_contexts",
4045f9996aaSopenharmony_ci        "//kernel/linux/common_modules:ko_build",
4055f9996aaSopenharmony_ci        "//third_party/e2fsprogs:e2fsprogs_host_toolchain",
4065f9996aaSopenharmony_ci        "//third_party/f2fs-tools:f2fs-tools_host_toolchain",
4075f9996aaSopenharmony_ci      ]
4085f9996aaSopenharmony_ci    }
4095f9996aaSopenharmony_ci    outputs = [ "$root_out_dir/packages/phone/images/chip_ckm.img" ]
4105f9996aaSopenharmony_ci  }
4115f9996aaSopenharmony_ci}
412