mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Codegen BUCK: moved generate-test.sh to be general-purpose generate-all CLI
Summary: This moves the test script that generates **all outputs using all generators** to a dedicated "generate-all" CLI. This allows us to use it via Buck, at FB and OSS. Also renamed the target to be more specific: "rn_codegen" => "generate_all_from_schema" Changelog: [Internal] Reviewed By: hramos Differential Revision: D24513995 fbshipit-source-id: 8435d3d065718eb1309c1c61fe28fb592787311a
This commit is contained in:
committed by
Facebook GitHub Bot
parent
e75a0dc265
commit
2a634f452c
@@ -9,7 +9,6 @@ load(
|
||||
"IS_OSS_BUILD",
|
||||
"MACOSX",
|
||||
"YOGA_CXX_TARGET",
|
||||
"fb_apple_library",
|
||||
"fb_xplat_cxx_test",
|
||||
"get_apple_compiler_flags",
|
||||
"get_apple_inspector_flags",
|
||||
@@ -21,6 +20,7 @@ load(
|
||||
"react_native_xplat_target",
|
||||
"react_native_xplat_target_apple",
|
||||
"rn_android_library",
|
||||
"rn_apple_library",
|
||||
"rn_xplat_cxx_library",
|
||||
)
|
||||
|
||||
@@ -41,15 +41,14 @@ def rn_codegen_cli():
|
||||
)
|
||||
|
||||
fb_native.sh_binary(
|
||||
name = "rn_codegen",
|
||||
main = "buck_tests/generate-tests.sh",
|
||||
name = "generate_all_from_schema",
|
||||
main = "src/cli/generators/generate-all.sh",
|
||||
resources = native.glob(
|
||||
[
|
||||
"buck_tests/**/*.js",
|
||||
"src/**/*.js",
|
||||
],
|
||||
) + [
|
||||
"buck_tests/generate-tests.js",
|
||||
"package.json",
|
||||
"//xplat/js:setup_env",
|
||||
],
|
||||
@@ -89,18 +88,11 @@ def rn_codegen_cli():
|
||||
visibility = ["PUBLIC"],
|
||||
)
|
||||
|
||||
# TODO: This doesn't work yet...
|
||||
fb_native.sh_binary(
|
||||
name = "rn_codegen",
|
||||
main = "buck_tests/generate-tests.sh",
|
||||
resources = native.glob(
|
||||
[
|
||||
"buck_tests/**/*.js",
|
||||
"src/**/*.js",
|
||||
],
|
||||
) + [
|
||||
"buck_tests/generate-tests.js",
|
||||
"package.json",
|
||||
name = "generate_all_from_schema",
|
||||
main = "scripts/buck-oss/generate-all.sh",
|
||||
resources = [
|
||||
":setup_cli",
|
||||
],
|
||||
visibility = ["PUBLIC"],
|
||||
)
|
||||
@@ -120,7 +112,7 @@ def rn_codegen_modules(
|
||||
fb_native.genrule(
|
||||
name = generate_fixtures_rule_name,
|
||||
srcs = native.glob(["src/generators/**/*.js"]),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:rn_codegen"), schema_target, name, native_module_spec_name),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:generate_all_from_schema"), schema_target, name, native_module_spec_name),
|
||||
out = "codegenfiles-{}".format(name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
@@ -211,45 +203,47 @@ def rn_codegen_modules(
|
||||
##############
|
||||
# iOS handling
|
||||
##############
|
||||
fb_native.genrule(
|
||||
name = generate_module_hobjcpp_name,
|
||||
cmd = "cp $(location :{})/{}.h $OUT".format(generate_fixtures_rule_name, native_module_spec_name),
|
||||
out = "{}.h".format(native_module_spec_name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
if not IS_OSS_BUILD:
|
||||
# iOS Buck build isn't fully working in OSS, so let's skip it for OSS for now.
|
||||
fb_native.genrule(
|
||||
name = generate_module_hobjcpp_name,
|
||||
cmd = "cp $(location :{})/{}.h $OUT".format(generate_fixtures_rule_name, native_module_spec_name),
|
||||
out = "{}.h".format(native_module_spec_name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
|
||||
fb_native.genrule(
|
||||
name = generate_module_mm_name,
|
||||
cmd = "cp $(location :{})/{}-generated.mm $OUT".format(generate_fixtures_rule_name, native_module_spec_name),
|
||||
out = "{}-generated.mm".format(native_module_spec_name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
fb_native.genrule(
|
||||
name = generate_module_mm_name,
|
||||
cmd = "cp $(location :{})/{}-generated.mm $OUT".format(generate_fixtures_rule_name, native_module_spec_name),
|
||||
out = "{}-generated.mm".format(native_module_spec_name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
|
||||
fb_apple_library(
|
||||
name = "generated_objcpp_modules-{}Apple".format(name),
|
||||
extension_api_only = True,
|
||||
header_namespace = "",
|
||||
sdks = (IOS),
|
||||
compiler_flags = [
|
||||
"-Wno-unused-private-field",
|
||||
],
|
||||
exported_headers = {
|
||||
"{}/{}.h".format(native_module_spec_name, native_module_spec_name): ":{}".format(generate_module_hobjcpp_name),
|
||||
},
|
||||
headers = [
|
||||
":{}".format(generate_module_hobjcpp_name),
|
||||
],
|
||||
srcs = [
|
||||
":{}".format(generate_module_mm_name),
|
||||
],
|
||||
labels = ["codegen_rule"],
|
||||
visibility = ["PUBLIC"],
|
||||
exported_deps = [
|
||||
"//xplat/js/react-native-github:RCTTypeSafety",
|
||||
"//xplat/js/react-native-github/Libraries/RCTRequired:RCTRequired",
|
||||
react_native_xplat_target_apple("react/nativemodule/core:core"),
|
||||
],
|
||||
)
|
||||
rn_apple_library(
|
||||
name = "generated_objcpp_modules-{}Apple".format(name),
|
||||
extension_api_only = True,
|
||||
header_namespace = "",
|
||||
sdks = (IOS),
|
||||
compiler_flags = [
|
||||
"-Wno-unused-private-field",
|
||||
],
|
||||
exported_headers = {
|
||||
"{}/{}.h".format(native_module_spec_name, native_module_spec_name): ":{}".format(generate_module_hobjcpp_name),
|
||||
},
|
||||
headers = [
|
||||
":{}".format(generate_module_hobjcpp_name),
|
||||
],
|
||||
srcs = [
|
||||
":{}".format(generate_module_mm_name),
|
||||
],
|
||||
labels = ["codegen_rule"],
|
||||
visibility = ["PUBLIC"],
|
||||
exported_deps = [
|
||||
"//xplat/js/react-native-github:RCTTypeSafety",
|
||||
"//xplat/js/react-native-github/Libraries/RCTRequired:RCTRequired",
|
||||
react_native_xplat_target_apple("react/nativemodule/core:core"),
|
||||
],
|
||||
)
|
||||
|
||||
def rn_codegen_components(
|
||||
name = "",
|
||||
@@ -272,7 +266,7 @@ def rn_codegen_components(
|
||||
fb_native.genrule(
|
||||
name = generate_fixtures_rule_name,
|
||||
srcs = native.glob(["src/generators/**/*.js"]),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:rn_codegen"), schema_target, name, name),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:generate_all_from_schema"), schema_target, name, name),
|
||||
out = "codegenfiles-{}".format(name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
@@ -501,7 +495,7 @@ def rn_codegen_cxx_modules(
|
||||
fb_native.genrule(
|
||||
name = generate_fixtures_rule_name,
|
||||
srcs = native.glob(["src/generators/**/*.js"]),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:rn_codegen"), schema_target, name, name),
|
||||
cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:generate_all_from_schema"), schema_target, name, name),
|
||||
out = "codegenfiles-{}".format(name),
|
||||
labels = ["codegen_rule"],
|
||||
)
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Copyright (c) Facebook, Inc. and its affiliates.
|
||||
#
|
||||
# This source code is licensed under the MIT license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
# Note: To be invoked by Buck sh_binary() in OSS environment.
|
||||
# DO NOT USE outside of Buck!
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
pushd "$BUCK_DEFAULT_RUNTIME_RESOURCES" >/dev/null
|
||||
node "build/lib/cli/generators/generate-all.js" "$@"
|
||||
popd >/dev/null
|
||||
+5
-1
@@ -8,9 +8,13 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
/**
|
||||
* This generates all possible outputs by executing all available generators.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const RNCodegen = require('../src/generators/RNCodegen.js');
|
||||
const RNCodegen = require('../../generators/RNCodegen.js');
|
||||
const fs = require('fs');
|
||||
const mkdirp = require('mkdirp');
|
||||
|
||||
+2
-2
@@ -10,10 +10,10 @@ set -u
|
||||
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
|
||||
|
||||
# shellcheck source=xplat/js/env-utils/setup_env_vars.sh
|
||||
source "$THIS_DIR/../../../../env-utils/setup_env_vars.sh"
|
||||
source "$THIS_DIR/../../../../../../env-utils/setup_env_vars.sh"
|
||||
|
||||
pushd "$JS_DIR" >/dev/null
|
||||
"$INSTALL_NODE_MODULES"
|
||||
popd >/dev/null
|
||||
|
||||
exec "$FLOW_NODE_BINARY" "$THIS_DIR/generate-tests.js" "$@"
|
||||
exec "$FLOW_NODE_BINARY" "$THIS_DIR/generate-all.js" "$@"
|
||||
@@ -185,7 +185,13 @@ def rn_apple_library(*args, **kwargs):
|
||||
kwargs.setdefault("link_whole", True)
|
||||
kwargs.setdefault("enable_exceptions", True)
|
||||
kwargs.setdefault("target_sdk_version", "10.0")
|
||||
|
||||
# Unsupported kwargs
|
||||
_ = kwargs.pop("plugins_only", False)
|
||||
_ = kwargs.pop("enable_exceptions", False)
|
||||
_ = kwargs.pop("extension_api_only", False)
|
||||
_ = kwargs.pop("sdks", [])
|
||||
|
||||
native.apple_library(*args, **kwargs)
|
||||
|
||||
def rn_java_library(*args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user