From f27cd35ddcdd768b1162c042a188dc6a632d571e Mon Sep 17 00:00:00 2001 From: Mohannad Farrag Date: Fri, 10 Feb 2023 17:41:19 +0000 Subject: [PATCH] gn2bp: Duplicate genrules that affect the JNI/Jarjar * Most of the genrules doesn't affect the JNI/jajar. Only genrules that uses the following scripts must be jarjared * //base/android/jni_generator/jni_generator.py * //base/android/jni_generator/jni_registration_generator.py Test: None Change-Id: I2f750e151002b8b21fa2bfd557ad1bbaf5110dff --- tools/gn2bp/Android.bp.swp | 38 +++++++--------------------- tools/gn2bp/gen_android_bp | 51 ++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp index 09e6b426de..25583ed140 100644 --- a/tools/gn2bp/Android.bp.swp +++ b/tools/gn2bp/Android.bp.swp @@ -923,9 +923,7 @@ cc_genrule { "--input_file " + "java/lang/Runtime.class " + "--javap " + - "$$(find $${OUT_DIR:-out}/.path -name javap) " + - "--package_prefix " + - "android.net.http.internal", + "$$(find $${OUT_DIR:-out}/.path -name javap)", out: [ "base/android_runtime_jni_headers/Runnable_jni.h", "base/android_runtime_jni_headers/Runtime_jni.h", @@ -3183,9 +3181,7 @@ cc_genrule { "--input_file " + "$(location base/android/java/src/org/chromium/base/task/PostTask.java) " + "--input_file " + - "$(location base/android/java/src/org/chromium/base/task/TaskRunnerImpl.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location base/android/java/src/org/chromium/base/task/TaskRunnerImpl.java)", out: [ "base/base_jni_headers/ApkAssets_jni.h", "base/base_jni_headers/ApplicationStatus_jni.h", @@ -4638,9 +4634,7 @@ cc_genrule { "--input_file " + "$(location base/test/android/java/src/org/chromium/base/ContentUriTestUtils.java) " + "--input_file " + - "$(location base/test/android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location base/test/android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java)", out: [ "base/test/base_unittests_jni_headers/ContentUriTestUtils_jni.h", "base/test/base_unittests_jni_headers/JavaHandlerThreadHelpers_jni.h", @@ -5075,9 +5069,7 @@ cc_genrule { "--input_file " + "$(location base/test/android/javatests/src/org/chromium/base/test/task/ThreadPoolTestHelpers.java) " + "--input_file " + - "$(location base/test/android/javatests/src/org/chromium/base/test/util/UrlUtils.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location base/test/android/javatests/src/org/chromium/base/test/util/UrlUtils.java)", out: [ "base/test/test_support_jni_headers/MainReturnCodeResult_jni.h", "base/test/test_support_jni_headers/MultiprocessTestClientLauncher_jni.h", @@ -6866,9 +6858,7 @@ cc_genrule { "--input_file " + "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java) " + "--input_file " + - "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java)", out: [ "components/cronet/android/cronet_jni_headers/CronetBidirectionalStream_jni.h", "components/cronet/android/cronet_jni_headers/CronetLibraryLoader_jni.h", @@ -7623,8 +7613,6 @@ cc_genrule { "--header-path " + "$(genDir)/components/cronet/android/cronet_jni_registration.h " + "--manual_jni_registration " + - "--package_prefix " + - "android.net.http.internal " + ";sed -i -e 's/OUT_SOONG_.TEMP_SBOX_.*_OUT/GEN/g' " + "$(genDir)/components/cronet/android/cronet_jni_registration.h", out: [ @@ -9233,9 +9221,7 @@ cc_genrule { "--output_name " + "PrefService_jni.h " + "--input_file " + - "$(location components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java)", out: [ "components/prefs/android/jni_headers/PrefService_jni.h", ], @@ -13790,9 +13776,7 @@ cc_genrule { "--input_file " + "$(location net/android/java/src/org/chromium/net/ProxyChangeListener.java) " + "--input_file " + - "$(location net/android/java/src/org/chromium/net/X509Util.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location net/android/java/src/org/chromium/net/X509Util.java)", out: [ "net/net_jni_headers/AndroidCertVerifyResult_jni.h", "net/net_jni_headers/AndroidKeyStore_jni.h", @@ -16822,9 +16806,7 @@ cc_genrule { "--input_file " + "$(location testing/android/native_test/java/src/org/chromium/native_test/MainRunner.java) " + "--input_file " + - "$(location testing/android/native_test/java/src/org/chromium/native_test/NativeTest.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location testing/android/native_test/java/src/org/chromium/native_test/NativeTest.java)", out: [ "testing/android/native_test/native_test_jni_headers/MainRunner_jni.h", "testing/android/native_test/native_test_jni_headers/NativeTest_jni.h", @@ -30126,9 +30108,7 @@ cc_genrule { "--input_file " + "$(location url/android/java/src/org/chromium/url/IDNStringUtil.java) " + "--input_file " + - "$(location url/android/java/src/org/chromium/url/Origin.java) " + - "--package_prefix " + - "android.net.http.internal", + "$(location url/android/java/src/org/chromium/url/Origin.java)", out: [ "url/url_jni_headers/IDNStringUtil_jni.h", "url/url_jni_headers/Origin_jni.h", diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp index ab74962018..4c5a4794f0 100755 --- a/tools/gn2bp/gen_android_bp +++ b/tools/gn2bp/gen_android_bp @@ -1023,6 +1023,10 @@ class GnRunBinary(BaseActionSanitizer): return NEWLINE.join(self.target.args) class JniGeneratorSanitizer(BaseActionSanitizer): + def __init__(self, target, arch, is_test_target): + self.is_test_target = is_test_target + super().__init__(target, arch) + def _add_location_tag_to_filepath(self, arg): if not arg.endswith('.class'): # --input_file supports both .class specifiers or source files as arguments. @@ -1039,7 +1043,9 @@ class JniGeneratorSanitizer(BaseActionSanitizer): self._delete_value_arg('--prev_output_dir', False) self._update_list_arg('--input_file', self._sanitize_filepath) self._update_list_arg('--input_file', self._add_location_tag_to_filepath) - self._append_arg('--package_prefix', 'android.net.http.internal') + if not self.is_test_target: + # Only jarjar platform code + self._append_arg('--package_prefix', 'android.net.http.internal') super()._sanitize_args() def _sanitize_outputs(self): @@ -1059,6 +1065,10 @@ class JniGeneratorSanitizer(BaseActionSanitizer): return tool_files class JniRegistrationGeneratorSanitizer(BaseActionSanitizer): + def __init__(self, target, arch, is_test_target): + self.is_test_target = is_test_target + super().__init__(target, arch) + def _sanitize_inputs(self): self.target.inputs = [file for file in self.target.inputs if not file.startswith('//out/')] @@ -1070,7 +1080,9 @@ class JniRegistrationGeneratorSanitizer(BaseActionSanitizer): # update_jni_registration_module removes them from the srcs of the module # It might be better to remove sources by '--sources-exclusions' self._delete_value_arg('--sources-exclusions') - self._append_arg('--package_prefix', 'android.net.http.internal') + if not self.is_test_target: + # Only jarjar platform code + self._append_arg('--package_prefix', 'android.net.http.internal') super()._sanitize_args() def get_cmd(self): @@ -1095,7 +1107,10 @@ class JniRegistrationGeneratorSanitizer(BaseActionSanitizer): class JavaJniRegistrationGeneratorSanitizer(JniRegistrationGeneratorSanitizer): def get_name(self): - return label_to_module_name(self.target.name) + "__java" + name = super().get_name() + "__java" + if self.is_test_target: + name += gn_utils.TESTING_SUFFIX + return name def _sanitize_outputs(self): self.target.outputs = [out for out in self.target.outputs if @@ -1146,18 +1161,18 @@ class WriteNativeLibrariesJavaSanitizer(BaseActionSanitizer): self._set_value_arg('--output', '$(out)') super()._sanitize_args() -def get_action_sanitizer(target, type, arch): +def get_action_sanitizer(target, type, arch, is_test_target): if target.script == "//build/write_buildflag_header.py": return WriteBuildFlagHeaderSanitizer(target, arch) elif target.script == "//build/write_build_date_header.py": return WriteBuildDateHeaderSanitizer(target, arch) elif target.script == '//base/android/jni_generator/jni_generator.py': - return JniGeneratorSanitizer(target, arch) + return JniGeneratorSanitizer(target, arch, is_test_target) elif target.script == '//base/android/jni_generator/jni_registration_generator.py': if type == 'java_genrule': - return JavaJniRegistrationGeneratorSanitizer(target, arch) + return JavaJniRegistrationGeneratorSanitizer(target, arch, is_test_target) else: - return JniRegistrationGeneratorSanitizer(target, arch) + return JniRegistrationGeneratorSanitizer(target, arch, is_test_target) elif target.script == "//build/util/version.py": return VersionSanitizer(target, arch) elif target.script == "//build/android/gyp/java_cpp_enum.py": @@ -1176,7 +1191,7 @@ def get_action_sanitizer(target, type, arch): # TODO: throw exception here once all script hacks have been converted. return BaseActionSanitizer(target, arch) -def create_action_foreach_modules(blueprint, target): +def create_action_foreach_modules(blueprint, target, is_test_target): """ The following assumes that rebase_path exists in the args. The args of an action_foreach contains hints about which output files are generated by which source files. @@ -1207,10 +1222,10 @@ def create_action_foreach_modules(blueprint, target): new_args.append(arg) target.args = new_args - return create_action_module(blueprint, target, 'cc_genrule') + return create_action_module(blueprint, target, 'cc_genrule', is_test_target) -def create_action_module_internal(target, type, arch=None): - sanitizer = get_action_sanitizer(target, type, arch) +def create_action_module_internal(target, type, is_test_target, arch=None): + sanitizer = get_action_sanitizer(target, type, arch, is_test_target) sanitizer.sanitize() module = Module(type, sanitizer.get_name(), target.name) @@ -1280,7 +1295,7 @@ def merge_modules(modules, genrule_type): merged_module.cmd = merge_cmd(modules, genrule_type) return merged_module -def create_action_module(blueprint, target, genrule_type): +def create_action_module(blueprint, target, genrule_type, is_test_target): ''' Create module for action target and add to the blueprint. If target has arch specific attributes this function merge them and create a single module. @@ -1293,11 +1308,11 @@ def create_action_module(blueprint, target, genrule_type): # different value for cpu-family arg between archs if target.name in ['//build/android:native_libraries_gen', '//build/android:native_libraries_gen__testing']: - module = create_action_module_internal(target, genrule_type, target.arch['android_arm']) + module = create_action_module_internal(target, genrule_type, is_test_target, target.arch['android_arm']) blueprint.add_module(module) return module - modules = {arch_name: create_action_module_internal(target, genrule_type, arch) + modules = {arch_name: create_action_module_internal(target, genrule_type, is_test_target, arch) for arch_name, arch in target.arch.items()} module = merge_modules(modules, genrule_type) blueprint.add_module(module) @@ -1384,9 +1399,9 @@ def create_modules_from_target(blueprint, gn, gn_target_name, is_test_target): if module is None: return None elif target.type == 'action': - module = create_action_module(blueprint, target, 'cc_genrule') + module = create_action_module(blueprint, target, 'cc_genrule', is_test_target) elif target.type == 'action_foreach': - module = create_action_foreach_modules(blueprint, target) + module = create_action_foreach_modules(blueprint, target, is_test_target) elif target.type == 'copy': # TODO: careful now! copy targets are not supported yet, but this will stop # traversing the dependency tree. For //base:base, this is not a big @@ -1634,7 +1649,7 @@ def create_java_module(blueprint, gn): if target.script == '//build/android/gyp/gcc_preprocess.py': module.srcs.add(':' + create_gcc_preprocess_modules(blueprint, target).name) else: - module.srcs.add(':' + create_action_module(blueprint, target, 'java_genrule').name) + module.srcs.add(':' + create_action_module(blueprint, target, 'java_genrule', False).name) preprocessor_module = create_java_jni_preprocessor(blueprint) module.plugins.add(preprocessor_module.name) blueprint.add_module(module) @@ -1649,7 +1664,7 @@ def create_java_api_module(blueprint, gn): source_module.comment += "\n// TODO(danstahr): add the API helpers separately after the main" \ " API is checked in and thoroughly reviewed" source_module.srcs.update([ - ':' + create_action_module(blueprint, gn.get_target(dep), 'java_genrule').name + ':' + create_action_module(blueprint, gn.get_target(dep), 'java_genrule', False).name for dep in get_api_java_actions(gn)]) blueprint.add_module(source_module)