From 4fa15c6cb583d35026ef0e35b3077a458b4d69fb Mon Sep 17 00:00:00 2001
From: s_c_c <shichuchao@huawei.com>
Date: Mon, 29 Jul 2024 11:00:02 +0800
Subject: [PATCH] feat support gn upgrade

---
 config/BUILDCONFIG.gn              |  2 +-
 config/ohos/copy_ex.gni            |  2 +-
 config/python.gni                  | 17 ++++++++++-------
 config/sanitizers/BUILD.gn         |  2 +-
 ohos/ndk/ndk.gni                   |  7 ++++---
 ohos/sdk/sdk.gni                   |  2 +-
 templates/cxx/prebuilt.gni         |  8 ++++----
 templates/metadata/module_info.gni | 10 ++++++----
 8 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/config/BUILDCONFIG.gn b/config/BUILDCONFIG.gn
index 280894e..2229b1c 100644
--- a/config/BUILDCONFIG.gn
+++ b/config/BUILDCONFIG.gn
@@ -554,7 +554,7 @@ if (!is_ohos) {
   sources_assignment_filter += []
 }
 
-set_sources_assignment_filter(sources_assignment_filter)
+# set_sources_assignment_filter(sources_assignment_filter)
 if (is_standard_system) {
   file_exist = exec_script("//build/scripts/check_file_exist.py",
                            [ "${device_build_path}/config.gni" ],
diff --git a/config/ohos/copy_ex.gni b/config/ohos/copy_ex.gni
index 306c452..ff2396c 100644
--- a/config/ohos/copy_ex.gni
+++ b/config/ohos/copy_ex.gni
@@ -22,7 +22,7 @@ import("//build/config/python.gni")
 #  outputs, testonly, visibility.
 #
 template("copy_ex") {
-  set_sources_assignment_filter([])
+  #  set_sources_assignment_filter([])
   action_with_pydeps(target_name) {
     forward_variables_from(invoker,
                            [
diff --git a/config/python.gni b/config/python.gni
index 79ddcb5..b59c7c4 100644
--- a/config/python.gni
+++ b/config/python.gni
@@ -44,8 +44,9 @@ template("python_library") {
       _py_files = read_file(invoker.pydeps_file, "list lines")
 
       # Filter out comments.
-      set_sources_assignment_filter([ "#*" ])
+      # set_sources_assignment_filter([ "#*" ])
       sources = _py_files
+      sources = filter_exclude(sources, [ "#*" ])
 
       # Even though the .pydep file is not used at runtime, it must be added
       # so that "gn analyze" will mark the target as changed when .py files
@@ -85,10 +86,11 @@ template("action_with_pydeps") {
   if (defined(sources)) {
     _old_sources = sources
   }
-  set_sources_assignment_filter([ "#*" ])
-  sources = _pydeps_raw
+  # set_sources_assignment_filter([ "#*" ])
+  # sources = _pydeps_raw
+  sources = filter_exclude(_pydeps_raw, [ "#*" ])
   _pydeps = sources
-  set_sources_assignment_filter([])
+  # set_sources_assignment_filter([])
   sources = _old_sources
 
   action(target_name) {
@@ -130,10 +132,11 @@ template("action_foreach_with_pydeps") {
   if (defined(sources)) {
     _old_sources = sources
   }
-  set_sources_assignment_filter([ "#*" ])
-  sources = _pydeps_raw
+  # set_sources_assignment_filter([ "#*" ])
+  # sources = _pydeps_raw
+  sources = filter_exclude(_pydeps_raw, [ "#*" ])
   _pydeps = sources
-  set_sources_assignment_filter([])
+  # set_sources_assignment_filter([])
   sources = _old_sources
 
   action_foreach(target_name) {
diff --git a/config/sanitizers/BUILD.gn b/config/sanitizers/BUILD.gn
index d2f0863..2fa841d 100644
--- a/config/sanitizers/BUILD.gn
+++ b/config/sanitizers/BUILD.gn
@@ -73,7 +73,7 @@ if ((is_mac || is_win || !use_xcode_clang || is_ohos) && using_sanitizer) {
       "$clang_base_path/lib/clang/$clang_version/lib/$_clang_rt_dso_path"
 
   copy("copy_asan_runtime") {
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
     sources = [ _clang_rt_dso_full_path ]
     outputs = [ "$root_out_dir/{{source_file_part}}" ]
   }
diff --git a/ohos/ndk/ndk.gni b/ohos/ndk/ndk.gni
index 58148f0..8533224 100644
--- a/ohos/ndk/ndk.gni
+++ b/ohos/ndk/ndk.gni
@@ -262,14 +262,15 @@ template("ohos_ndk_copy") {
   }
   _dest = invoker.dest_dir
 
-  set_sources_assignment_filter([ "*os-irrelevant*" ])
-  sources = [ _dest ]
+  # set_sources_assignment_filter([ "*os-irrelevant*" ])
+  # sources = [ _dest ]
+  sources = filter_exclude([ _dest ], [ "*os-irrelevant*" ])
   if (sources == []) {
     _notice_rel_dir = ndk_os_irrelevant_out_dir
   } else {
     _notice_rel_dir = ndk_os_specific_out_dir
   }
-  set_sources_assignment_filter([])
+  # set_sources_assignment_filter([])
   sources = []
 
   _main_target_name = target_name
diff --git a/ohos/sdk/sdk.gni b/ohos/sdk/sdk.gni
index bc0c851..03a0c7e 100644
--- a/ohos/sdk/sdk.gni
+++ b/ohos/sdk/sdk.gni
@@ -133,7 +133,7 @@ template("make_sdk_modules") {
         _sdk_modules += [ "${_target_label}(${invoker.sdk_toolchain})" ]
       }
       sources = []
-      set_sources_assignment_filter([])
+      # set_sources_assignment_filter([])
     }
     not_needed(invoker, [ "sdk_toolchain" ])
 
diff --git a/templates/cxx/prebuilt.gni b/templates/cxx/prebuilt.gni
index 74fe7fc..01f924b 100644
--- a/templates/cxx/prebuilt.gni
+++ b/templates/cxx/prebuilt.gni
@@ -42,7 +42,7 @@ template("ohos_prebuilt_executable") {
                              "license_file",
                              "license_as_sources",
                            ])
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
     sources = [ invoker.source ]
     outputs = [ _copy_output ]
     module_type = "bin"
@@ -90,7 +90,7 @@ template("ohos_prebuilt_shared_library") {
                              "license_file",
                              "license_as_sources",
                            ])
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
     sources = [ invoker.source ]
     outputs = [ _copy_output ]
     module_type = "lib"
@@ -136,7 +136,7 @@ template("ohos_prebuilt_static_library") {
                              "license_file",
                              "license_as_sources",
                            ])
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
     sources = [ invoker.source ]
     outputs = [ _copy_output ]
     bypass_module_info_generation = true
@@ -176,7 +176,7 @@ template("ohos_prebuilt_etc") {
                              "license_file",
                              "license_as_sources",
                            ])
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
     sources = [ invoker.source ]
     outputs = [ _copy_output ]
     module_type = "etc"
diff --git a/templates/metadata/module_info.gni b/templates/metadata/module_info.gni
index f4d4e54..412a1ea 100644
--- a/templates/metadata/module_info.gni
+++ b/templates/metadata/module_info.gni
@@ -223,8 +223,9 @@ template("write_meta_data") {
       _parent_invoker = invoker.invoker
       _caller_target_name = get_label_info(":${_parent_invoker.target_name}",
                                            "label_no_toolchain")
-      set_sources_assignment_filter(app_target_allowlist)
+      # set_sources_assignment_filter(app_target_allowlist)
       sources = [ _caller_target_name ]
+      sources = filter_exclude(sources, app_target_allowlist)
       if (sources != []) {
         if (type == "js_assets" || type == "ets_assets" ||
             type == "unresolved_assets" || type == "assets") {
@@ -237,7 +238,7 @@ template("write_meta_data") {
               "Illegal target name: \"${_caller_target_name}\", target name of ohos_resources must endswith res or resources or resource")
         }
       }
-      set_sources_assignment_filter([])
+      # set_sources_assignment_filter([])
     }
 
     script = "//build/templates/metadata/write_meta_data.py"
@@ -264,18 +265,19 @@ template("write_meta_data") {
 
     _deps_metadata = []
     inputs = []
-    set_sources_assignment_filter(app_target_allowlist)
+    # set_sources_assignment_filter(app_target_allowlist)
     foreach(d, _possible_deps) {
       sources = []
       _target_label = get_label_info(d, "label_no_toolchain")
       sources += [ _target_label ]
+      sources = filter_exclude(sources, app_target_allowlist)
       if (sources == []) {
         _deps_metadata += [ get_label_info(d, "target_gen_dir") + "/" +
                             get_label_info(d, "name") + ".metadata" ]
         deps += [ "${_target_label}__metadata" ]
       }
     }
-    set_sources_assignment_filter([])
+    # set_sources_assignment_filter([])
 
     if (_deps_metadata != []) {
       args += [ "--deps-metadata" ]
-- 
2.45.2.windows.1

