From dc0b917fb55e9ccfb4ea0a55db8669066e8dca9c Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Tue, 26 Jan 2021 17:03:49 -0800 Subject: [PATCH] Preserve directory structure in android zip Summary: The Codegen runs on all JavaScript specs, generating C++/Java/Jni, etc. Then, we copy only the Java files into a directory: https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/xplat/js/react-native-github/packages/react-native-codegen/DEFS.bzl?commit=3945e905d6636c005af77d29b7f45ef7b1efe00e&lines=340-347 And zip that directory up, before [creating an android_library with that zip](https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/xplat/js/react-native-github/packages/react-native-codegen/DEFS.bzl?commit=3945e905d6636c005af77d29b7f45ef7b1efe00e&lines=395-414%2C442-452%2C415-442): https://www.internalfb.com/intern/diffusion/FBS/browsefile/master/xplat/js/react-native-github/packages/react-native-codegen/DEFS.bzl?commit=3945e905d6636c005af77d29b7f45ef7b1efe00e&lines=365-371 **Problem:** We unnecessarily flatten the directory structure of all our Java files. This diff moves all the files under the java/ folder of the Codegen output into the zip that is used to create the android_library. This way, we avoid filename collisions between two Pojos belonging to two different components (with different packages), but that have the same name. Changelog: [Internal] Differential Revision: D26050260 fbshipit-source-id: f92e916cd640a688997dd75c2707d77cb15de083 --- packages/react-native-codegen/DEFS.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-codegen/DEFS.bzl b/packages/react-native-codegen/DEFS.bzl index 6d990e65771..3652e494556 100644 --- a/packages/react-native-codegen/DEFS.bzl +++ b/packages/react-native-codegen/DEFS.bzl @@ -341,7 +341,7 @@ def rn_codegen_components( name = copy_generated_java_files, # TODO: support different package name internally. # Right now, it's hardcoded to `com.facebook.react.viewmanagers`. - cmd = "mkdir $OUT && find $(location :{})/java/com/facebook/react/viewmanagers -name '*.java' -exec cp {{}} $OUT \\;".format(generate_fixtures_rule_name), + cmd = "mkdir -p $OUT/com/facebook/react/viewmanagers && cp -R $(location :{})/java/com/facebook/react/viewmanagers/* $OUT/com/facebook/react/viewmanagers".format(generate_fixtures_rule_name), out = "java", labels = ["codegen_rule"], )