2023-08-18 17:11:27 +00:00
|
|
|
load("@python_versions//3.11:defs.bzl", _py_binary = "py_binary")
|
|
|
|
|
load("@rules_python//python:defs.bzl", "PyInfo")
|
|
|
|
|
load("@with_cfg.bzl", "with_cfg")
|
|
|
|
|
load("//bazel:http_deb_archive.bzl", "http_deb_archive")
|
2025-05-19 17:35:33 +00:00
|
|
|
load("//bazel:simple_repository.bzl", "simple_repository")
|
2024-11-14 13:37:47 +00:00
|
|
|
load("//runtimes/common:packages.bzl", "packages")
|
2023-08-18 17:11:27 +00:00
|
|
|
|
|
|
|
|
BASE_URL = "https://apt.repos.neuron.amazonaws.com"
|
|
|
|
|
STRIP_PREFIX = "opt/aws/neuron"
|
|
|
|
|
|
2025-05-19 17:35:33 +00:00
|
|
|
_BUILD_FILE_PRELUDE = """\
|
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
2024-11-14 13:37:47 +00:00
|
|
|
"""
|
2023-08-18 17:11:27 +00:00
|
|
|
|
2025-05-19 17:35:33 +00:00
|
|
|
_UBUNTU_PACKAGES = {
|
|
|
|
|
"zlib1g": packages.filegroup(name = "zlib1g", srcs = ["lib/x86_64-linux-gnu/libz.so.1"]),
|
|
|
|
|
"libgomp1": packages.filegroup(name = "libgomp1", srcs = ["usr/lib/x86_64-linux-gnu/libgomp.so.1"]),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_NEURON_PACKAGES = {
|
|
|
|
|
"aws-neuronx-runtime-lib": "\n".join([
|
|
|
|
|
packages.load_("@zml//bazel:patchelf.bzl", "patchelf"),
|
|
|
|
|
packages.cc_library_hdrs_glob(
|
|
|
|
|
name = "libnrt_headers",
|
|
|
|
|
hdrs_glob = [
|
|
|
|
|
"include/ndl/**/*.h",
|
|
|
|
|
"include/nrt/**/*.h",
|
|
|
|
|
],
|
|
|
|
|
includes = ["include"],
|
|
|
|
|
visibility = ["//visibility:public"],
|
|
|
|
|
),
|
|
|
|
|
packages.patchelf(
|
|
|
|
|
name = "libnrt.patchelf",
|
2025-07-07 16:48:07 +00:00
|
|
|
src = "lib/libnrt.so.1",
|
2025-07-15 15:26:03 +00:00
|
|
|
set_rpath = "$ORIGIN",
|
2025-05-19 17:35:33 +00:00
|
|
|
add_needed = [
|
|
|
|
|
# readelf -d ./opt/aws/neuron/libl/libncfw.so
|
|
|
|
|
"libncfw.so.2",
|
|
|
|
|
],
|
|
|
|
|
rename_dynamic_symbols = {
|
|
|
|
|
"dlopen": "zmlxneuron_dlopen",
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
packages.patchelf(
|
|
|
|
|
name = "libncfw.patchelf",
|
2025-07-07 16:48:07 +00:00
|
|
|
src = "lib/libncfw.so",
|
2025-05-19 17:35:33 +00:00
|
|
|
soname = "libncfw.so.2",
|
|
|
|
|
),
|
|
|
|
|
]),
|
2024-11-14 13:37:47 +00:00
|
|
|
"aws-neuronx-collectives": "\n".join([
|
2025-05-19 17:35:33 +00:00
|
|
|
packages.filegroup(
|
2024-11-14 13:37:47 +00:00
|
|
|
name = "libnccom",
|
2025-05-19 17:35:33 +00:00
|
|
|
srcs = ["lib/libnccom.so.2"],
|
2024-11-14 13:37:47 +00:00
|
|
|
),
|
|
|
|
|
]),
|
2023-08-18 17:11:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def _neuron_impl(mctx):
|
2024-11-14 13:37:47 +00:00
|
|
|
loaded_packages = packages.read(mctx, [
|
|
|
|
|
"@zml//runtimes/neuron:packages.lock.json",
|
|
|
|
|
])
|
2025-05-19 17:35:33 +00:00
|
|
|
|
|
|
|
|
simple_repository(
|
|
|
|
|
name = "libpjrt_neuron",
|
|
|
|
|
build_file = ":libpjrt_neuron.BUILD.bazel",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for pkg_name, build_file_content in _UBUNTU_PACKAGES.items():
|
|
|
|
|
pkg = loaded_packages[pkg_name]
|
|
|
|
|
http_deb_archive(
|
|
|
|
|
name = pkg_name,
|
|
|
|
|
urls = pkg["urls"],
|
|
|
|
|
sha256 = pkg["sha256"],
|
|
|
|
|
build_file_content = _BUILD_FILE_PRELUDE + build_file_content,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
for pkg_name, build_file_content in _NEURON_PACKAGES.items():
|
2024-11-14 13:37:47 +00:00
|
|
|
pkg = loaded_packages[pkg_name]
|
2023-08-18 17:11:27 +00:00
|
|
|
http_deb_archive(
|
|
|
|
|
name = pkg_name,
|
2024-11-14 13:37:47 +00:00
|
|
|
urls = pkg["urls"],
|
2023-08-18 17:11:27 +00:00
|
|
|
sha256 = pkg["sha256"],
|
|
|
|
|
strip_prefix = STRIP_PREFIX,
|
2025-05-19 17:35:33 +00:00
|
|
|
build_file_content = _BUILD_FILE_PRELUDE + build_file_content,
|
2023-08-18 17:11:27 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return mctx.extension_metadata(
|
|
|
|
|
reproducible = True,
|
|
|
|
|
root_module_direct_deps = "all",
|
|
|
|
|
root_module_direct_dev_deps = [],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
neuron_packages = module_extension(
|
|
|
|
|
implementation = _neuron_impl,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
py_binary_with_script, _py_binary_internal = with_cfg(
|
|
|
|
|
kind = _py_binary,
|
|
|
|
|
extra_providers = [PyInfo],
|
|
|
|
|
).set(Label("@rules_python//python/config_settings:bootstrap_impl"), "script").build()
|