Implements pywrap_tensorflow_macro_opensource using cc_shared_library.

`dynamic_deps` is not used. Will be added in a separate change.

PiperOrigin-RevId: 470353185
This commit is contained in:
A. Unique TensorFlower 2022-08-26 16:02:22 -07:00 committed by TensorFlower Gardener
parent f8df5fead8
commit cc96e4ef75
3 changed files with 84 additions and 21 deletions

View File

@ -1 +1 @@
5.1.1
5.3.0

View File

@ -3257,11 +3257,70 @@ py_library(
pywrap_tensorflow_macro(
name = "pywrap_tensorflow_internal",
srcs = ["pywrap_tensorflow_internal.cc"],
static_deps = [
"@arm_neon_2_x86_sse//:__subpackages__",
"@bazel_tools//:__subpackages__",
"@boringssl//:__subpackages__",
"@clog//:__subpackages__",
"@com_github_cares_cares//:__subpackages__",
"@com_github_googlecloudplatform_tensorflow_gcp_tools//:__subpackages__",
"@com_github_grpc_grpc//:__subpackages__",
"@com_google_absl//:__subpackages__",
"@com_google_googleapis//:__subpackages__",
"@com_google_protobuf//:__subpackages__",
"@com_googlesource_code_re2//:__subpackages__",
"@compute_library//:__subpackages__",
"@cpuinfo//:__subpackages__",
"@cudnn_frontend_archive//:__subpackages__",
"@curl//:__subpackages__",
"@dlpack//:__subpackages__",
"@double_conversion//:__subpackages__",
"@eigen_archive//:__subpackages__",
"@farmhash_archive//:__subpackages__",
"@farmhash_gpu_archive//:__subpackages__",
"@fft2d//:__subpackages__",
"@flatbuffers//:__subpackages__",
"@FP16//:__subpackages__",
"@FXdiv//:__subpackages__",
"@gemmlowp//:__subpackages__",
"@gif//:__subpackages__",
"@highwayhash//:__subpackages__",
"@hwloc//:__subpackages__",
"@icu//:__subpackages__",
"@jsoncpp_git//:__subpackages__",
"@libjpeg_turbo//:__subpackages__",
"@libxsmm_archive//:__subpackages__",
"@llvm_openmp//:__subpackages__",
"@llvm-project//:__subpackages__",
"@llvm_terminfo//:__subpackages__",
"@llvm_zlib//:__subpackages__",
"@lmdb//:__subpackages__",
"@local_config_cuda//:__subpackages__",
"@local_config_git//:__subpackages__",
"@local_config_nccl//:__subpackages__",
"@local_config_python//:__subpackages__",
"@local_config_rocm//:__subpackages__",
"@local_config_tensorrt//:__subpackages__",
"@local_execution_config_platform//:__subpackages__",
"@mkl_dnn_acl_compatible//:__subpackages__",
"@mkl_dnn_v1//:__subpackages__",
"@nccl_archive//:__subpackages__",
"@nsync//:__subpackages__",
"@org_sqlite//:__subpackages__",
"@platforms//:__subpackages__",
"@png//:__subpackages__",
"@pthreadpool//:__subpackages__",
"@pybind11//:__subpackages__",
"@ruy//:__subpackages__",
"@snappy//:__subpackages__",
"@sobol_data//:__subpackages__",
"//:__subpackages__",
"@upb//:__subpackages__",
"@XNNPACK//:__subpackages__",
"@zlib//:__subpackages__",
],
# copybara:comment_begin(OSS Windows only: DEF file for exported symbols)
win_def_file = select({
"//tensorflow:windows": ":pywrap_tensorflow_filtered_def_file",
"//conditions:default": None,
}),
win_def_file = ":pywrap_tensorflow_filtered_def_file",
# copybara:comment_end
deps = [
":bfloat16_lib",
@ -3492,7 +3551,7 @@ genrule(
visibility = ["//visibility:public"],
)
# Get the import library of _pywrap_tensorflow_internal.pyd
# Get the import library of _pywrap_tensorflow_internal.pyd, platform-specific to Windows.
filegroup(
name = "get_pywrap_tensorflow_import_lib_file",
srcs = [":_pywrap_tensorflow_internal.so"],

View File

@ -2076,6 +2076,8 @@ def _collect_deps_aspect_impl(target, ctx):
all_deps += ctx.rule.attr.deps
if hasattr(ctx.rule.attr, "data"):
all_deps += ctx.rule.attr.data
if hasattr(ctx.rule.attr, "roots"):
all_deps += ctx.rule.attr.roots
for dep in all_deps:
direct.append(dep.label)
if hasattr(dep, "tf_collected_deps"):
@ -2083,7 +2085,7 @@ def _collect_deps_aspect_impl(target, ctx):
return struct(tf_collected_deps = depset(direct = direct, transitive = transitive))
collect_deps_aspect = aspect(
attr_aspects = ["deps", "data"],
attr_aspects = ["deps", "data", "roots"],
implementation = _collect_deps_aspect_impl,
)
@ -2279,10 +2281,13 @@ _append_init_to_versionscript = rule(
def pywrap_tensorflow_macro(
name,
srcs = [],
roots = [],
deps = [],
dynamic_deps = [],
static_deps = [],
copts = [],
version_script = None,
**kwargs):
win_def_file = None):
"""Builds the pywrap_tensorflow_internal shared object."""
module_name = name.split("/")[-1]
@ -2292,7 +2297,7 @@ def pywrap_tensorflow_macro(
# TODO(b/137885063): tf_cc_shared_object needs to be cleaned up; we really
# shouldn't be passing a name qualified with .so here.
cc_library_name = cc_library_base + ".so"
cc_shared_library_name = cc_library_base + ".so"
cc_library_pyd_name = "/".join(
name.split("/")[:-1] + ["_" + module_name + ".pyd"],
)
@ -2328,12 +2333,7 @@ def pywrap_tensorflow_macro(
"$(location %s.lds)" % vscriptname,
],
})
extra_deps += select({
clean_dep("//tensorflow:windows"): [],
"//conditions:default": [
"%s.lds" % vscriptname,
],
})
additional_linker_inputs = if_windows([], otherwise = ["%s.lds" % vscriptname])
# Due to b/149224972 we have to add libtensorflow_framework.so
# as a dependency so the linker doesn't try and optimize and
@ -2347,8 +2347,8 @@ def pywrap_tensorflow_macro(
],
)
tf_cc_shared_object(
name = cc_library_name,
tf_cc_shared_library(
name = cc_shared_library_name,
srcs = srcs,
# framework_so is no longer needed as libtf.so is included via the extra_deps.
framework_so = [],
@ -2359,8 +2359,12 @@ def pywrap_tensorflow_macro(
]),
linkopts = extra_linkopts,
linkstatic = 1,
roots = roots,
deps = deps + extra_deps,
**kwargs
dynamic_deps = dynamic_deps,
static_deps = static_deps,
win_def_file = win_def_file,
additional_linker_inputs = additional_linker_inputs,
)
# When a non-versioned .so is added as a 'src' to a bazel target, it uses
@ -2376,14 +2380,14 @@ def pywrap_tensorflow_macro(
name_os = pattern % (cc_library_base, "")
native.genrule(
name = name_os + "_rule",
srcs = [":" + cc_library_name],
srcs = [":" + cc_shared_library_name],
outs = [name_os],
cmd = "cp $< $@",
)
native.genrule(
name = "gen_" + cc_library_pyd_name,
srcs = [":" + cc_library_name],
srcs = [":" + cc_shared_library_name],
outs = [cc_library_pyd_name],
cmd = "cp $< $@",
)
@ -2408,7 +2412,7 @@ def pywrap_tensorflow_macro(
srcs_version = "PY3",
data = select({
clean_dep("//tensorflow:windows"): [":" + cc_library_pyd_name],
"//conditions:default": [":" + cc_library_name],
"//conditions:default": [":" + cc_shared_library_name],
}),
)