2016-01-22 16:03:51 +00:00
|
|
|
# Helpers for referring to React Native open source code.
|
2016-02-24 10:17:56 +00:00
|
|
|
#
|
2016-01-22 16:03:51 +00:00
|
|
|
# This lets us build React Native:
|
|
|
|
# - At Facebook by running buck from the root of the fb repo
|
|
|
|
# - Outside of Facebook by running buck in the root of the git repo
|
|
|
|
|
2016-01-23 10:57:58 +00:00
|
|
|
import os
|
|
|
|
|
2016-02-24 16:39:09 +00:00
|
|
|
|
2016-01-22 16:03:51 +00:00
|
|
|
# Example: react_native_target('java/com/facebook/react/common:common')
|
|
|
|
def react_native_target(path):
|
|
|
|
return '//ReactAndroid/src/main/' + path
|
|
|
|
|
|
|
|
# Example: react_native_tests_target('java/com/facebook/react/modules:modules')
|
|
|
|
def react_native_tests_target(path):
|
|
|
|
return '//ReactAndroid/src/test/' + path
|
|
|
|
|
|
|
|
# Example: react_native_integration_tests_target('java/com/facebook/react/testing:testing')
|
|
|
|
def react_native_integration_tests_target(path):
|
|
|
|
return '//ReactAndroid/src/androidTest/' + path
|
|
|
|
|
|
|
|
# Helper for referring to non-RN code from RN OSS code.
|
|
|
|
# Example: react_native_dep('java/com/facebook/systrace:systrace')
|
|
|
|
def react_native_dep(path):
|
|
|
|
return '//ReactAndroid/src/main/' + path
|
|
|
|
|
2016-02-24 10:01:37 +00:00
|
|
|
JSC_DEPS = [
|
|
|
|
'//native/third-party/jsc:jsc',
|
|
|
|
'//native/third-party/jsc:jsc_legacy_profiler',
|
|
|
|
]
|
|
|
|
|
|
|
|
JSC_INTERNAL_DEPS = [
|
|
|
|
'//native/third-party/jsc-internal:jsc',
|
|
|
|
'//native/third-party/jsc-internal:jsc_legacy_profiler',
|
|
|
|
]
|
|
|
|
|
2016-01-22 16:03:51 +00:00
|
|
|
INTERNAL_APP = 'PUBLIC'
|
|
|
|
|
|
|
|
# React property preprocessor
|
|
|
|
original_android_library=android_library
|
|
|
|
def android_library(
|
|
|
|
name,
|
|
|
|
deps=[],
|
|
|
|
annotation_processors=[],
|
|
|
|
annotation_processor_deps=[],
|
|
|
|
*args,
|
|
|
|
**kwargs):
|
|
|
|
|
|
|
|
common_processors = [
|
|
|
|
'com.facebook.react.processing.ReactPropertyProcessor',
|
|
|
|
]
|
|
|
|
common_processor_deps = [
|
|
|
|
react_native_target('java/com/facebook/react/processing:processing'),
|
|
|
|
]
|
|
|
|
|
|
|
|
if react_native_target('java/com/facebook/react/uimanager/annotations:annotations') in deps and name != 'processing':
|
|
|
|
annotation_processors = list(set(annotation_processors + common_processors))
|
|
|
|
annotation_processor_deps = list(set(annotation_processor_deps + common_processor_deps))
|
|
|
|
|
|
|
|
original_android_library(
|
|
|
|
name=name,
|
|
|
|
deps=deps,
|
|
|
|
annotation_processors=annotation_processors,
|
|
|
|
annotation_processor_deps=annotation_processor_deps,
|
|
|
|
*args,
|
|
|
|
**kwargs)
|
2016-01-23 10:57:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
def robolectric3_test(name, deps, vm_args=None, *args, **kwargs):
|
|
|
|
|
|
|
|
vm_args = vm_args or []
|
|
|
|
|
|
|
|
# We may need to create buck-out/gen/ if we're running after buck clean.
|
|
|
|
tmp = 'buck-out/gen/' + get_base_path() + '/__java_test_' + name + '_output__'
|
|
|
|
extra_vm_args = [
|
|
|
|
'-XX:+UseConcMarkSweepGC', # required by -XX:+CMSClassUnloadingEnabled
|
|
|
|
'-XX:+CMSClassUnloadingEnabled',
|
|
|
|
'-XX:ReservedCodeCacheSize=150M',
|
|
|
|
'-Drobolectric.dependency.dir=buck-out/gen/ReactAndroid/src/main/third-party/java/robolectric3/robolectric',
|
|
|
|
'-Dlibraries=buck-out/gen/ReactAndroid/src/main/third-party/java/robolectric3/robolectric/*.jar',
|
|
|
|
'-Drobolectric.logging.enabled=true',
|
|
|
|
'-XX:MaxPermSize=620m',
|
|
|
|
'-Drobolectric.offline=true',
|
|
|
|
]
|
|
|
|
if os.path.isdir("/dev/shm"):
|
|
|
|
extra_vm_args.append('-Djava.io.tmpdir=/dev/shm')
|
|
|
|
else:
|
|
|
|
extra_vm_args.append(
|
|
|
|
'-Djava.io.tmpdir=%s' % os.path.join(os.path.abspath('.'),
|
|
|
|
'buck-out/bin'))
|
|
|
|
|
|
|
|
# defined in BUCK
|
|
|
|
robolectric_test(
|
|
|
|
name=name,
|
|
|
|
deps=deps,
|
|
|
|
vm_args=vm_args + extra_vm_args,
|
|
|
|
*args,
|
|
|
|
**kwargs
|
2016-02-24 16:39:09 +00:00
|
|
|
)
|