tools/build_defs/oss/soloader_defs.bzl (76 lines of code) (raw):
def _deps_decorator(**kwargs):
"""
Dependencies starting with '//deps:' should be provided (included in
'provided_deps' rather than 'deps'). This decorator takes care
of moving all such dependencies from 'deps' to 'provided_deps'.
"""
all_deps = kwargs.get("deps", [])
oss_deps = [dep for dep in all_deps if dep.startswith("//deps:")]
kwargs["deps"] = [dep for dep in all_deps if dep not in oss_deps]
kwargs.setdefault("provided_deps", []).extend(oss_deps)
return kwargs
def android_library(**kwargs):
native.android_library(**_deps_decorator(**kwargs))
def android_aar(**kwargs):
native.android_aar(**_deps_decorator(**kwargs))
def fb_java_library(**kwargs):
native.java_library(**_deps_decorator(**kwargs))
def fb_core_android_library(**kwargs):
android_library(**kwargs)
def export_file(**kwargs):
native.export_file(**kwargs)
def _add_dependency_to_index(name, DEPENDENCIES_INDEX, **dep):
DEPENDENCIES_INDEX[name] = dep
def maven_library(
name,
DEPENDENCIES_INDEX,
group,
artifact,
version,
sha1,
visibility,
packaging = "jar",
scope = "compiled"):
"""
Creates remote_file and prebuilt_jar rules for a maven artifact.
"""
_add_dependency_to_index(
name = name,
DEPENDENCIES_INDEX = DEPENDENCIES_INDEX,
artifact = artifact,
group = group,
packaging = packaging,
scope = scope,
sha1 = sha1,
version = version,
)
remote_file_name = "{}-remote".format(name)
native.remote_file(
name = remote_file_name,
out = "{}-{}.{}".format(name, version, packaging),
url = ":".join(["mvn", group, artifact, packaging, version]),
sha1 = sha1,
)
if packaging == "jar":
native.prebuilt_jar(
name = name,
binary_jar = ":{}".format(remote_file_name),
visibility = visibility,
)
else:
native.android_prebuilt_aar(
name = name,
aar = ":{}".format(remote_file_name),
visibility = visibility,
)
def define_list_deps_target(DEPENDENCIES_INDEX):
"""
Generates rule that dumps all maven_libraries defined in given
BUCK file in json format.
"""
json_deps = struct(**DEPENDENCIES_INDEX).to_json()
native.genrule(
name = "list-deps",
out = "dependencies.json",
cmd = """echo '{}' > $OUT""".format(json_deps),
)